.[ModulaWare logo 9.5KB]

What is a 64 bit Compiler?

Content:
What is a 64 bit Oberon-2 Compiler?
What is a 64 bit Modula-2 Compiler?
Summary
Get a free OpenVMS Alpha operating system license

What is a 64 bit Oberon-2 Compiler?

A definition needs a goal. If the goal is,
  1. to provide the Oberon-2 application programmer access to the 64 bit address space on a 64 bit processor running under a 64 bit operating system
    and
  2. still being able to compile 99% of modules written for the Oberon System's (including all text-elements, XE, Kepler, Paint, Dialog, Expr, spread-sheet, and tetris, only to name few, excluding the lower-level modules such as Kernel, Modules, Unix, and X11), which consitutes the largest Oberon-2 source base, without any source code change,
then a 64 bit Oberon-2 compiler must have all of the following features:
  1. 64 bit integer literals
  2. 64 bit whole-number data type
  3. 64 bit pointers, addresses, and SYSTEM.ADR()
  4. 64 bit addresses in open array- and type-descriptors
  5. 64 bit storage allocation in NEW
  6. 64 bit LONGINT, 16 bit INTEGER, 8 bit SHORTINT
  7. pervasive function procedures navigating 64 <--> 16 <--> 8 bit integers
  8. no 32 bit address restrictions
  9. no language change (put 32 bit integers into SYSTEM, you won't miss them)

    In the Alpha Oberon-2 compiler A2O, we also added:

  10. new syntax for 64 bit hex literals,
  11. new data type LONGSET (64 bit set) and syntactic support for the longset constructors.
LONGSET is optional and is not needed to port existing tools and applications written for the Oberon System. Extending the set size of pervasive data type SET from 32 to 64 would break existing source code, inherently designed for 32 bit computers (for example modules constructing patterns in fonts). LONGSET is used for example in the garbage collector (GC) of AOS, which processes addresses by casting them to sets. Without longset, more modifications would have been required in the GC, due to data type size dependencies.

The port of the 64 bit Alpha Oberon System AOS is described in the article 64 bit Addressing in Alpha Oberon-2.

Many of the lower-level modules were inherently designed for a 32 bit compiler/processor. We resolved 32 bit data type dependencies in these modules so that all lower-level modules of AOS still compile with a 32 bit compiler. The latter effort was a goal but not a requirement. It was done just to proove that it is possible.

The Oberon systems and compiler implementations (OSCI) list provides a comparison with other implementations in respect to integer- and pointer-size.

What is a 64 bit Modula-2 compiler?

If the goal is to provide 64 bit addressing and to be source code compatible with existing Modula-2 programs, then a 64 bit Modula-2 compiler must have all of the following features:

  1. 64 bit integer literals
  2. 64 bit INTEGER and CARDINAL
  3. 64 bit subrange base type
  4. 64 bit pointers, addresses, and SYSTEM.ADR()
  5. no 32 bit address restrictions
  6. no language change (put 32 bit integers into SYSTEM, you won't miss them)
  7. separate module library:
    1. 64 bit storage allocation module for ALLOCATE/DEALLOCATE
    2. I/O with 64 bit buffer addresses
More details are given in the articles
64 bit Modula-2 for OpenVMS Alpha -- Implementation Notes ,
Migration of 32 bit Modula-2 programs to 64 bit on OpenVMS Alpha, and
64 bit Virtual Regions with Modula-2 on OpenVMS Alpha.

Summary

With the ModulaWare 64 bit Modula-2 and Oberon-2 compiler and the 64 bit Oberon System, the door is now open to exploit the 64 bit address space. Alpha processor based systems equipped with 4GB of main memory are available today. With such a configuration, OpenVMS can efficiently handle much more than 4GB of virtual memory process space.

Get a free OpenVMS Alpha operating system license

Since 01-Mar-1999, DEC/Compaq/HP's 64 bit OpenVMS Alpha V7.2 (since Feb-2008 V8.3) operating system is free for personal use. For more details, see OpenVMS Hobbyist. The bootable binary distribution kit CD is available for a handling charge. Hobbyists can obtain the product authorization keys for OpenVMS and layered products free of charge.


[ Home | OpenVMS Modula-2 and Oberon-2 compiler | Alpha Oberon_System | The ModulaTor | Modula-2 and Oberon-2 Bibliography | Oberon[-2] links | Modula-2 links | General book recommendations ]

© (1998-2008) ModulaWare. Last update: 26-Feb-2008
Webdesign by www.otolo.com/webworx