| 12345678910111213141516171819202122232425262728293031323334 |
- program bug0201;
- type rec = record
- a : DWord;
- b : Word;
- end;
- function x(r1 : rec; r2 : rec; var r3 : rec); assembler;
- 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;
- 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.
|