t28_farparam.pas 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. program t28;
  2. var
  3. g : integer ;
  4. unused : integer ;
  5. (* Seventy parameters. p63 and p70 sit at +128 and +142, the first offsets
  6. an 8-bit displacement cannot represent, so their accesses must use the
  7. 4-byte mod=10 form -- that is what check_framedisp.py asserts.
  8. A call caps at 16 arguments, so p17..p70 are never passed and reading
  9. them returns stack garbage. `unused' takes that sum and is never
  10. printed: the point of the fixture is the ENCODING, and the printed
  11. value must stay deterministic. Do not read this as a claim that a
  12. 70-argument call works. *)
  13. procedure far (p1 : integer,
  14. p2 : integer,
  15. p3 : integer,
  16. p4 : integer,
  17. p5 : integer,
  18. p6 : integer,
  19. p7 : integer,
  20. p8 : integer,
  21. p9 : integer,
  22. p10 : integer,
  23. p11 : integer,
  24. p12 : integer,
  25. p13 : integer,
  26. p14 : integer,
  27. p15 : integer,
  28. p16 : integer,
  29. p17 : integer,
  30. p18 : integer,
  31. p19 : integer,
  32. p20 : integer,
  33. p21 : integer,
  34. p22 : integer,
  35. p23 : integer,
  36. p24 : integer,
  37. p25 : integer,
  38. p26 : integer,
  39. p27 : integer,
  40. p28 : integer,
  41. p29 : integer,
  42. p30 : integer,
  43. p31 : integer,
  44. p32 : integer,
  45. p33 : integer,
  46. p34 : integer,
  47. p35 : integer,
  48. p36 : integer,
  49. p37 : integer,
  50. p38 : integer,
  51. p39 : integer,
  52. p40 : integer,
  53. p41 : integer,
  54. p42 : integer,
  55. p43 : integer,
  56. p44 : integer,
  57. p45 : integer,
  58. p46 : integer,
  59. p47 : integer,
  60. p48 : integer,
  61. p49 : integer,
  62. p50 : integer,
  63. p51 : integer,
  64. p52 : integer,
  65. p53 : integer,
  66. p54 : integer,
  67. p55 : integer,
  68. p56 : integer,
  69. p57 : integer,
  70. p58 : integer,
  71. p59 : integer,
  72. p60 : integer,
  73. p61 : integer,
  74. p62 : integer,
  75. p63 : integer,
  76. p64 : integer,
  77. p65 : integer,
  78. p66 : integer,
  79. p67 : integer,
  80. p68 : integer,
  81. p69 : integer,
  82. p70 : integer) ;
  83. begin
  84. g := p16 + p1 ;
  85. unused := p63 + p70
  86. end ;
  87. begin
  88. far (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) ;
  89. writeln (g)
  90. end.