Do Inform 6.x builds place the parser at the same addresses?

Exactly what it says on the title. Does a specific Inform 6 compiler version emit the Inform runtime (I am mainly interested in the parser, but there are also tables and library code…) at deterministic, fixed addresses in the z5/.z8 output, or may those addresses “unpredictably” shift between different source projects or builds? Thanks in advance for sharing your expertise. :wink:

No. Start of high memory is dependent on things defined in lower memory (arrays, objects. …).

You can view the memory layout by giving Inform 6 the -z argument.

The various tables and so on are always generated in the same order, but the size of each one varies with the game contents. So the addresses must vary as well.

One thing is that the routines are compiled in a predictable order, the order they are defined. This is complicated by the fact that the optimizer can, when specified to do so, omit uncalled routines. But in theory you know what the next routine will be after an identified one.

Thanks for your answers. After processing your insights, I created a script that compares two z8 story files (compiled with the same Inform source and library) using a similarity-based routine-matching algorithm. It flagged numerous Routines from the Inform runtime, several of which are identical in both files. I am happy now. :upside_down_face: