tasm15.pp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. { %CPU=i386 }
  2. const
  3. expect: array [0..41] of byte = (
  4. $C3, // ret
  5. $C2,$05,$00, // ret 5
  6. $C3, // retn
  7. $C2,$05,$00, // retn 5
  8. $CB, // retf
  9. $CA,$05,$00, // retf 5
  10. $66,$C3, // retw
  11. $66,$C2,$05,$00, // retw 5
  12. $66,$C3, // retnw
  13. $66,$C2,$05,$00, // retnw 5
  14. $66,$CB, // retfw
  15. $66,$CA,$05,$00, // retfw 5
  16. $C3, // retd
  17. $C2,$05,$00, // retd 5
  18. $C3, // retnd
  19. $C2,$05,$00, // retnd 5
  20. $CB, // retfd
  21. $CA,$05,$00 // retfd 5
  22. );
  23. {$asmmode intel}
  24. procedure test; assembler; nostackframe;
  25. asm
  26. ret
  27. ret 5
  28. retn
  29. retn 5
  30. retf
  31. retf 5
  32. retw
  33. retw 5
  34. retnw
  35. retnw 5
  36. retfw
  37. retfw 5
  38. retd
  39. retd 5
  40. retnd
  41. retnd 5
  42. retfd
  43. retfd 5
  44. end;
  45. {$asmmode att}
  46. procedure test2; assembler; nostackframe;
  47. asm
  48. ret
  49. ret $5
  50. ret
  51. ret $5
  52. lret
  53. lret $5
  54. retw
  55. retw $5
  56. retw
  57. retw $5
  58. lretw
  59. lretw $5
  60. ret
  61. ret $5
  62. ret
  63. ret $5
  64. lret
  65. lret $5
  66. end;
  67. procedure Error;
  68. begin
  69. Writeln('Error!');
  70. Halt(1);
  71. end;
  72. begin
  73. if CompareByte(Pointer(@test)^, expect, SizeOf(expect)) <> 0 then
  74. Error;
  75. if CompareByte(Pointer(@test2)^, expect, SizeOf(expect)) <> 0 then
  76. Error;
  77. Writeln('Ok!')
  78. end.