Hi Bernd,
On 4/4/23 08:54, Bernd Oppolzer via fpc-pascal wrote:
Am 04.04.2023 um 08:16 schrieb Jacob Kroon via fpc-pascal:
Thanks for the tip above.
I was able to write a couple of perl-scripts that are able to convert
my old Pascal sources to something that fpc can parse. Amongst other
things, the scripts inject the "public name"/"external name"
annotations so that the program can link.
But I suspect I have a new problem: With the old Pascal/MT+ compiler
it would appear that local variables declared in functions/procedures
have a life-time that spans the whole program, like a "static"
declared variable in C. With fpc, it looks like locally declared
variables are automatic, put on the stack(?), and so they go out of
existence once out of scope ?
IMO, this is not a feature of the old PASCAL compiler,
but instead your Pascal programs "by error" depends on the local variables
appearing at the same location on the stack at subsequent calls as before
(if there are no other calls at the same level in between).
There is a programmers guide for the Pascal/MT+ compiler here:
http://www.bitsavers.org/pdf/digitalResearch/pascal_MT+/Pascal_MT+_Language_CPM_Programmers_Guide_Mar83.pdf
In chapter 4.1 it states that the "LOCAL VARIABLE STACK" is only used in
programs compiled with the $S+ option set for recursion, and I don't see
it set anywhere in my source code. So I think in my case, the local
variables are actually not stored on the stack.
[cut]
Regards,
Jacob
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal