[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