next up previous contents
Next: Register Conventions Up: Using Assembly language Previous: Calling mechanism

Signalling changed registers

  When the compiler uses variables, it sometimes stores them, or the result of some calculations, in the processor registers. If you insert assembler code in your program that modifies the processor registers, then this may interfere with the compiler's idea about the registers. To avoid this problem, Free Pascal allows you to tell the compiler which registers have changed. The compiler will then avoid using these registers. Telling the compiler which registers have changed, is done by specifying a set of register names behind an assembly block, as follows:

asm
  ...
end ['R1',...,'Rn'];
Here R1 to Rn are the names of the 32-bit registers you modify in your assembly code.

As an example :

   asm
   movl BP,%eax
   movl 4(%eax),%eax
   movl %eax,__RESULT
   end ['EAX'];
This example tells the compiler that the EAX register was modified.



Michael Van Canneyt
Thu Sep 10 14:04:11 CEST 1998