[fpc-pascal] How to translate Delphi Assembly MOV EAX,[EBP+4]

Giuliano Colla giuliano.colla at fastwebnet.it
Wed Jul 18 18:42:10 CEST 2018



Il 18/07/2018 17:19, Dennis ha scritto:
> The following delphi code when compiled by FPC, raised these errors:
> Compile Project, Target: lib\x86_64-win64\Project1.exe: Exit code 1, 
> Errors: 10, Warnings: 2
> StrBuffer.pas(100,19) Error: Unknown identifier "EAX"
> StrBuffer.pas(100,23) Error: Assembler syntax error in operand
> StrBuffer.pas(100,24) Error: Unknown identifier "EBP"
> StrBuffer.pas(100,29) Error: Invalid constant expression
> StrBuffer.pas(100,29) Error: Invalid reference syntax
> StrBuffer.pas(100,29) Warning: No size specified and unable to 
> determine the size of the operands, using DWORD as default
> StrBuffer.pas(207,19) Error: Unknown identifier "EAX"
> StrBuffer.pas(207,23) Error: Assembler syntax error in operand
> StrBuffer.pas(207,24) Error: Unknown identifier "EBP"
> StrBuffer.pas(207,29) Error: Invalid constant expression
> StrBuffer.pas(207,29) Error: Invalid reference syntax
> StrBuffer.pas(207,29) Warning: No size specified and unable to 
> determine the size of the operands, using DWORD as default
>
> Can anyone help me?
>
> class procedure TStrBuffer.Error(const Msg: string; Data: Integer);
>
>   function ReturnAddr: Pointer;
>   asm
>           MOV     EAX,[EBP+4]
>   end;
>
> begin
>   raise EListError.CreateFmt(Msg, [Data])at ReturnAddr;
> end;
> _______________________________________________
> fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

It looks like Intel asm syntax, while fpc defaults to AT&T assembler.
According the docs you should prepend a switch
{$ASMMODE intel)
to your asm section, or at the top of the unit.

Hope that it helps,

Giuliano




More information about the fpc-pascal mailing list