fpc/bugs/bug0201.pp
peter b6f3ac45bf - 201,206
+ 217-221
1999-02-16 00:43:19 +00:00

39 lines
595 B
ObjectPascal

program bug0201;
{$asmmode att}
type rec = record
a : DWord;
b : Word;
end;
procedure x(r1 : rec; r2 : rec; var r3 : rec);
begin
asm
movl r3, %edi
movl r1.a, %eax
addl r2.a, %eax
movl %eax, rec.a(%edi)
movw r1.b, %cx
addw r2.b, %cx
movw %cx, rec.b(%edi)
end;
end;
var r1, r2, r3 : rec;
begin
r1.a := 100; r1.b := 200;
r2.a := 300; r2.b := 400;
x(r1, r2, r3);
Writeln(r3.a, ' ', r3.b);
if (r3.a<>400) or (r3.b<>600) then
begin
Writeln('Error in assembler code');
Halt(1);
end;
end.