Assembler (Intel) inconsistencies in 2.0.x, Was: Re: [fpc-devel] Bug: compilation loop in 2.0.2 when using -So

Jonas Maebe jonas.maebe at elis.ugent.be
Fri Aug 18 15:03:32 CEST 2006


On 18 aug 2006, at 14:56, Konstantin M√ľnning wrote:

> So a programmer should not need exactly to know if/when a variable is
> cached in a register or saved on the stack (=memory) and when
> referencing it the same way the same result should be expected.

A programmer actually must always be aware of how the parameters are  
passed, because otherwise in case of register parameters he can  
unknowingly overwrite some parameters while "loading" others into  
registers. So he almost always needs different code anyway.

> Here an example where the same source code is compiled differently  
> which
> should not depend on calling convention, register caching or  
> whatsoever:
>
> PROCEDURE Test(l:LongInt);ASSEMBLER;
>  ASM
>   mov eax,[l]
>  END;
>
> PROCEDURE Test;ASSEMBLER;
>  VAR l:LongInt;
>  ASM
>   mov eax,[l]
>  END;

Well, it does depend on it and it will probably not be changed, since  
that would break too much compatibility.


Jonas


More information about the fpc-devel mailing list