Author: James Robertson
Date: 14:35:26 12/21/98
Go up one level in this thread
On December 21, 1998 at 15:58:12, Bo Persson wrote:
>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
Darn. No more registers!? How fast is stack pushing and popping? For instance,
would
mov esi,[ml]
....
push esi
....
pop esi
....
be faster than
mov esi,[ml]
....
mov esi,eax
.....
mov esi,[ml]
?
Thanks for you help!
James
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.