mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-07 08:28:08 +02:00
50 lines
605 B
ObjectPascal
50 lines
605 B
ObjectPascal
{ %cpu=i386 }
|
|
|
|
{$ifdef fpc}
|
|
{$mode delphi}
|
|
{$endif}
|
|
|
|
type
|
|
tc = class
|
|
procedure v; virtual;
|
|
procedure testintel; virtual;
|
|
procedure testatt; virtual;
|
|
end;
|
|
|
|
procedure tc.testintel; assembler; nostackframe;
|
|
asm
|
|
mov ecx,[eax]
|
|
jmp [ecx + vmtoffset tc.v]
|
|
end;
|
|
|
|
{$asmmode att}
|
|
|
|
procedure tc.testatt; assembler; nostackframe;
|
|
asm
|
|
movl (%eax),%ecx
|
|
jmpl +vmtoffset tc.v(%ecx)
|
|
end;
|
|
|
|
var
|
|
l : longint;
|
|
|
|
procedure tc.v;
|
|
begin
|
|
l := 5;
|
|
end;
|
|
|
|
var
|
|
c: tc;
|
|
begin
|
|
c := tc.create;
|
|
c.testintel;
|
|
if l <> 5 then
|
|
halt(1);
|
|
l := 0;
|
|
c.testatt;
|
|
if l <> 5 then
|
|
halt(1);
|
|
c.free;
|
|
end.
|
|
|