mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-05 10:38:14 +02:00
62 lines
974 B
ObjectPascal
62 lines
974 B
ObjectPascal
{ %skiptarget=android }
|
|
{ %cpu=i386 }
|
|
{ %opt=-Cg- }
|
|
|
|
{$ifdef fpc}
|
|
{$mode delphi}
|
|
{$endif}
|
|
|
|
program test;
|
|
type
|
|
tr_rec=object
|
|
x: integer;
|
|
r: record
|
|
a,b: integer;
|
|
end;
|
|
function f:integer;
|
|
end;
|
|
|
|
var
|
|
x1,a1,a2,b1: byte;
|
|
b2: longint;
|
|
|
|
function tr_rec.f:integer;
|
|
asm
|
|
mov dl,byte ptr [eax].tr_rec.x
|
|
mov x1,dl
|
|
mov dl,byte ptr [eax].tr_rec.r
|
|
mov a1,dl
|
|
mov dl,byte ptr [eax].tr_rec.r.a
|
|
mov a2,dl
|
|
mov dl,byte ptr [eax].tr_rec.r.b
|
|
mov b1,dl
|
|
movzx eax,byte ptr [eax].tr_rec.r.b
|
|
mov b2,eax
|
|
end;
|
|
|
|
var
|
|
v: tr_rec;
|
|
begin
|
|
v.x:=4;
|
|
v.r.a:=10;
|
|
v.r.b:=17;
|
|
writeln(v.f,' (should be 17)');
|
|
writeln(x1,' (should be 4)');
|
|
writeln(a1,' (should be 10)');
|
|
writeln(a2,' (should be 10)');
|
|
writeln(b1,' (should be 17)');
|
|
writeln(b2,' (should be 17)');
|
|
if v.f<>17 then
|
|
halt(1);
|
|
if x1<>4 then
|
|
halt(2);
|
|
if a1<>10 then
|
|
halt(3);
|
|
if a2<>10 then
|
|
halt(4);
|
|
if b1<>17 then
|
|
halt(5);
|
|
if b2<>17 then
|
|
halt(6);
|
|
end.
|