tmul3264.pp 956 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. var
  2. gl: longint;
  3. gc: cardinal;
  4. procedure testsigned;
  5. var
  6. l1, l2: longint;
  7. b1: byte;
  8. i: int64;
  9. begin
  10. l1 := longint($80000000);
  11. gl := longint($80000000);
  12. l2 := $11;
  13. b1 := $11;
  14. i := int64(l1)*l2;
  15. if (i <> int64($fffffff780000000)) then
  16. halt(1);
  17. i := int64(l1)*$11;
  18. if (i <> int64($fffffff780000000)) then
  19. halt(2);
  20. i := int64(gl)*$11;
  21. if (i <> int64($fffffff780000000)) then
  22. halt(3);
  23. i := int64(gl)*b1;
  24. if (i <> int64($fffffff780000000)) then
  25. halt(4);
  26. end;
  27. procedure testunsigned;
  28. var
  29. l1, l2: cardinal;
  30. b1: byte;
  31. i: qword;
  32. begin
  33. l1 := $80000000;
  34. l2 := $11;
  35. gc := $80000000;
  36. b1 := $11;
  37. i := qword(l1)*l2;
  38. if (i <> $880000000) then
  39. halt(5);
  40. i := qword(l1)*$11;
  41. if (i <> $880000000) then
  42. halt(6);
  43. i := qword(gc)*$11;
  44. if (i <> $880000000) then
  45. halt(7);
  46. i := qword(gc)*b1;
  47. if (i <> $880000000) then
  48. halt(8);
  49. end;
  50. begin
  51. testsigned;
  52. testunsigned;
  53. end.