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

Reply via email to