Author: Bo Persson
Date: 12:58:12 12/21/98
Go up one level in this thread
On December 21, 1998 at 12:16:49, James Robertson wrote:
>I was recommended to you as someone who is good with x86 register programming.
>
>I am writing a function of my program in assembly, and I have run out of
>registers; I have already used eax, ebx, ecx, edx, esi, and edi; and I need
>one more. Unfortunately, esp, eip generate errors "improper operand type".
>My function looks kinda like this:
>
>MyFunction(MoveList ml)
>{
> __asm
> {
> //and I would like to put:
> mov eip,[ml]
> }
>}
>Compiler: &%^*$ Improper operand type.
>
>I am using VC++ 5.0 under Win95, with a Win32 console program. Please help!
>
>James
Hi, James!
Welcome to x86 programming, never enough registers! :-)
mov eip,[ml]
should be coded as
jmp [ml]
Seriously, the EIP register points to the next instruction and can not be used
as a general purpose register.
Depending on the enviromnent you might be able to use the EBP register, but I
think VC++ often uses that for local stack frame reference.
Try to rearrange your code to save a register or push one on then stack and pop
it later.
Bo Persson
bop@malmo.mail.telia.com
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.