Has anyone ever come across a M2 compiler where LONGINT isn't 32-bit?

40 views
Skip to first unread message

trijezdci

unread,
Oct 13, 2020, 12:33:50 PM10/13/20
to
I am working on a project, the nature of which requires that it is portable across dialects, compilers, targets and memory models.

Having examined some 16 or 17 classic Modula-2 compilers (PIM and ISO), I concluded that there are three different memory models:

(1) 16-bit CARDINAL, 32-bit LONGINT
(2) 32-bit CARDINAL, 32-bit LONGINT
(3) 32-bit CARDINAL, 64-bit LONGINT

In other words, it would seem that no matter which compiler, target and memory model, type LONGINT is always at least 32-bit wide.

Nevertheless, I would be interested to learn of any exceptions where this is not the case. So, if you have come across a compiler providing a memory model different than the above mentioned three cases, please post a reply to let me know which compiler/target and the bit widths for CARDINAL and LONGINT.

Thank you in advance.

trijezdci

unread,
Oct 13, 2020, 12:58:38 PM10/13/20
to
Here is the source code to a simple self-contained utility that prints out the bit widths of CARDINAL and LONGINT:

PIM version:
https://github.com/m2sf/m2pp/blob/master/cfg/utils/CheckMemModel.pim.mod

ISO version:
https://github.com/m2sf/m2pp/blob/master/cfg/utils/CheckMemModel.iso.mod

Chris Burrows

unread,
Oct 29, 2020, 7:57:17 PM10/29/20
to
On Wednesday, October 14, 2020 at 3:28:38 AM UTC+10:30, trijezdci wrote:

> > Having examined some 16 or 17 classic Modula-2 compilers (PIM and ISO), I concluded that there are three different memory models:
> >
> > (1) 16-bit CARDINAL, 32-bit LONGINT
> > (2) 32-bit CARDINAL, 32-bit LONGINT
> > (3) 32-bit CARDINAL, 64-bit LONGINT
> >
> > In other words, it would seem that no matter which compiler, target and memory model, type LONGINT is always at least 32-bit wide.
> >
> > Nevertheless, I would be interested to learn of any exceptions where this is not the case. So, if you have come across a compiler providing a memory model different than the above mentioned three cases, please post a reply to let me know which compiler/target and the bit widths for CARDINAL and LONGINT.

Note that LONGINT was not introduced until the 3rd Edition of PIM so it was not implemented in early compilers e.g. Volition Systems.
Reply all
Reply to author
Forward
0 new messages