Subj : TP 7.0 pointer passing convension
To : All
From : Anton Shepelev
Date : Sat Feb 15 2020 08:33 pm
Hello, all
The Language Guide for Turbo Pascal 7.0 says:
Variable parameters (var parameters) are always
passed by reference--a pointer that points to the
actual storage location.
[...]
A pointer-type parameter is passed as two words
(a double word). The segment part is pushed
before the offset part so that the offset part
ends up at the lowest address.
I have written the following proceudre that adds its
first argument to the second:
procedure AtoB(a: byte; var b: byte);
begin asm
PUSH AX { store AX }
MOV DI, [BP+4] { store offset of b in DI }
MOV ES, [BP+2] { store segment of b in ES }
MOV AX, [BP+8] { store a in AX }
MOV [DI], AX { assign AX to a }
POP AX { restore AX }
end end;
Does not it show that the TP documentation is in er-
ror, and pointers are put on stack backwards?
---
* Origin: nntps://fidonews.mine.nu - Lake Ylo - Finland (2:221/360.0)