tasm15a.pp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. { %CPU=x86_64 }
  2. const
  3. expect: array [0..47] 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. $CB, // retfd
  17. $CA,$05,$00, // retfd 5
  18. $C3, // retq
  19. $C2,$05,$00, // retq 5
  20. $C3, // retnq
  21. $C2,$05,$00, // retnq 5
  22. $48,$CB, // retfq
  23. $48,$CA,$05,$00 // retfq 5
  24. );
  25. {$asmmode intel}
  26. procedure test; assembler; nostackframe;
  27. asm
  28. ret
  29. ret 5
  30. retn
  31. retn 5
  32. retf
  33. retf 5
  34. retw
  35. retw 5
  36. retnw
  37. retnw 5
  38. retfw
  39. retfw 5
  40. retfd
  41. retfd 5
  42. retq
  43. retq 5
  44. retnq
  45. retnq 5
  46. retfq
  47. retfq 5
  48. end;
  49. {$asmmode att}
  50. procedure test2; assembler; nostackframe;
  51. asm
  52. ret
  53. ret $5
  54. ret
  55. ret $5
  56. lret
  57. lret $5
  58. retw
  59. retw $5
  60. retw
  61. retw $5
  62. lretw
  63. lretw $5
  64. lret
  65. lret $5
  66. retq
  67. retq $5
  68. retq
  69. retq $5
  70. lretq
  71. lretq $5
  72. end;
  73. procedure Error;
  74. begin
  75. Writeln('Error!');
  76. Halt(1);
  77. end;
  78. begin
  79. if CompareByte(Pointer(@test)^, expect, SizeOf(expect)) <> 0 then
  80. Error;
  81. if CompareByte(Pointer(@test2)^, expect, SizeOf(expect)) <> 0 then
  82. Error;
  83. Writeln('Ok!')
  84. end.