[fpc-pascal] Inline bytes

Jonas Maebe jonas.maebe at elis.ugent.be
Thu Aug 9 15:33:52 CEST 2012


Rainer Stratmann wrote on Thu, 09 Aug 2012:

> Am Thursday 09 August 2012 15:14:29 schrieb Jonas Maebe:
>> {$asmmode att}
>> asm
>>    .byte $0x1f, $0xef, $0x1a
>> end;

I made an error here, the "$" should be removed (see Thomas' mail)

>> {$asmmode intel}
>> asm
>>    db $1a, $ef, $1a
>> end;
>
> Thanks, the next problem then is: I wanted to do that in an inline procedure
> but if the compiler detects an asm statement then inline is disabled(!).

That's correct, it is not possible inline assembler statements in FPC.  
You can try a macro instead:

{$macro on}
{$define IReallyKnowWhatIAmDoing:=asm .byte 0x1f, 0xef, 0x1a end}

begin
   IReallyKnowWhatIAmDoing;
end.

You will have to declare the macro in a common include file or in  
every main source file if you want to use it in more than one  
compilation module though.

Jonas



More information about the fpc-pascal mailing list