[fpc-devel] Issue with inline assembler
    Sergei Gorelkin 
    sergei_gorelkin at mail.ru
       
    Mon Nov 20 17:48:52 CET 2006
    
    
  
Hello,
I had encountered an unpleasant issue while trying to compile Delphi
code that uses inline assembler. The code looks like this:
===
{$asmmode intel}
type
  TMyObject = class(TObject)
  public
    procedure DoSomething;
    procedure DoSomethingElse(a, b: Integer);
  end;
procedure TMyObject.DoSomething;
begin
  SomeStuff;
  asm
     // here put some values into edx and ecx
     mov  eax, self
     call TMyObject.DoSomethingElse
  end;
  SomeMoreStuff;
end;
===
In Delphi, everything is ok. In FPC, it compiles without errors, but
crashes at runtime. Producing an assembler listing with
'fpc -aMASM -s file.pas' shows that the line 'call TMyObject.DoSomethingElse' is
translated into 'call 0' (yes, with literal zero). IMO this shouldn't
be so - it must either produce correct address or produce a error
during compilation (first case being preferred for Delphi
compatibility).
Should I report this as bug?
-- 
Best regards,
 Sergei
    
    
More information about the fpc-devel
mailing list