Terra Datentechnik Home Home · Modula-2

Large and Big Tools and Packages

Many of our customers developed during the last years projects that started to reach some of the internal limits of the original Logitech Modula-2 V3.40 development tools. The Large and Big Tools Packages are collections of tools that allow to overcome these limits and to develop and maintain systems of large or even bvery large size. The Big Tools Package will also increase your productivity, as the performance of the Big Linker has been improved significantly due to the use of extended memory.

Prior to reaching the internal limits of the compiler, linker, and M2Make utility customers often encounter limitations with debugging. If you only have these problems we recommend that you get the Large System Tools, which in particular provide the means for cross-debugging.

The Large and Big Tools can either be purchased single or in the form of two packages. Each one of these packages also includes the Large System Tools, as well as the M2V34 Library Support Release 2.0.

The Large Tools Package consists of

The Big Tools Package consists of

The following text provides extracts of the README files of the Big Linker and Big M2Make Utility. As these tools are a collection of independently adapted programs, there is no consistent naming and the release numbers do not correspond.

Top of Page

TERRA Big and Large Versions of the Logitech Modula-2 Compiler 3.41

Please refer to the TERRA Versions 3.41 of the Logitech Modula-2 Compiler for a description of the Modula-2 Big and Large Compiler versions.

Top of Page

TERRA Modula-2 Big Linker M2LB

(Version 3.52/big/1 WT-ST, October 1997)

Big Linker General Information

The TERRA Modula-2 Big Linker M2LB is a special version of the TERRA Modula-2 Large Linker M2LL. It provides the same enhancements and supports the same options as the corresponding Large Linker version (V3.51). Please refer to the Large System Tools for a description.

In addition, the Big Linker is able to use extended memory (memory above 1 MB), as far as such memory is available and not used by anything else (e.g. by a virtual disk). The use of extended memory prevents the need for "slow" temporary disk files, and thus results in a significant performance improvement (typically by a factor of about 4 or 5). It also allows to link much larger programs.

The Big Linker M2LB uses the DOS/16M system (DOS-extender by Tenberry Software, Inc.) and runs in Proctected Mode. Therefore, it can only be used on 80286/386/etc. based machines. The Big Linker may also be used in a DOS box under Windows 3.1 or Windows95.

Big Linker Special Features and Memory Requirements

The Big Linker is capable of linking a single EXE or OVL file with a total of up to 1 MB code and data. Programs larger than 1 MB must be split into layers of up to 1 MB in size. The number of layers and the total program size is only limited by the free memory available to the Big Linker. Details with regard to Big Linker memory requirements are listed below.

The total amount of memory available to the Big Linker can be inquired by setting the /SE option and running it without specifying an object file to link. The /SE option may also be used to understand how much memory is actually used when linking a program.

For programs with about 150 KB of code or more (depending on the available memory), the Big Linker is about 25% - 30% faster than the Large Linker. It is assumed that the Large Linker needs to dump the internal buffers to the disk (indicated by the message "dumping data to disk") for such programs, while the Big Linker does not, at least as long as enough extended memory above 1 MB is available.

As it can bee seen when using the option /SE, the total memory available to the Big Linker (listed in the statistics output under "Total free + used") should be about 2.5 times larger than the code of the program to be linked, in order to prevent that a dump of the internal buffers occurs in the Big Linker. For non-base layers, this number increases by about 25 % of the code size of all lower level layers.

The minimal requirement for free memory available to the Big Linker in order to link a base layer with 1 MB of code is in the order of 0.7 - 1 MB. The minimal free memory required by the Big Linker for linking a second layer with 1 MB of code to such a base layer is in the order of about 0.9 - 1.3 MB, and 1.2 - 1.5 MB for linking a third such layer. It increases by about 0.25 MB for any further 1 MB layer. In each of these cases, an additional amount of about 1.8 - 2.0 MB should be available, in order to prevent the use of temporary files, i.e. for maximum performance. In order to link the top layer of a 3 MB program (for instance) completely in memory, about 3 - 3.5 MB of memory must be available to the Big Linker.

Note that the Big Linker (unlike the Large Linker) does not impose any restriction on the total number of symbols in a program or layer. The Big Linker uses a symbol table (hash table) of 14000 entries, where each entry can store a list of symbols. A 1 MB layer is estimated to contain about 7000 - 9000 symbols. When linking a non-base layer, only about 75% of the symbols in the base layers are needed. Therefore, the symbol table will contain about 20000 - 25000 symbols when linking the top layer of a 3 MB program.

Top of Page

TERRA Modula-2 Big M2Make Utility

The enhanced TERRA Big M2Make utility allows to overcome the memory limitations of the standard 3.40 version. Due to the use of a DOS-extender it supports processing of very large programs even with option /E for the extended cross-reference listing (availability of some extended memory assumed).

Compared to the standard 3.40 version M2Make utility the enhanced TERRA Big M2Make utility provides the following extensions:

  • Additional cYcles option /Y:
    Using /Y causes M2Make to display the names of the modules in each import cycle it finds, instead of only listing a summary of cyclic import frequences at the end.
  • Improved sTatistics option /T:
    The improved statistics option displays detailed information about usage of the available heap memory.
  • Enlarged internal stack:
    When "making" very large programs, the standard 3.40 version M2Make might encounter a stack overflow in some recursive code, which will usually crash your PC without giving any hint for the reason. The enhanced M2Make Big version uses a generously enlarged stack that should prevent any such problem. In addition, it includes selective stack test code, that would cause a corresponding message to be written to your screen in the case of a stack overflow.
  • Enlarged cross-reference capacity:
    When using the cross-reference options M2Make needs a lot of memory. The standard 3.40 version M2Make uses a fixed string table of about 64K bytes. This small table, as well as the usually limited availablity of heap memory under DOS impose rather low limits on the standard M2Make. The TERRA enhanced M2Make Big version does not use a fixed size string table.
  • Capacity only limited by available (extended) memory:
    The TERRA enhanced M2Make Big version uses the DOS/16M system (DOS extender by Tenberry Software, Inc.) and runs in Proctected Mode. Therefore, it can only be used on 80286/386 etc. based machines. The M2Make Big version capacity is only limited by the available extended memory.
  • Windows compatibility:
    The M2Make 3.41/Big of March 1998 is the first DOS/16M based M2Make version that is capable of running in a Windows 3 or Windows 95 DOS box. Earlier versions M2Make /Big versions either did not run in these environments or required special measures to be taken.

Top of Page

Von Mensch zu Mensch
Home · Modula-2

 Copyright © TERRA Datentechnik 1996-2006
Alle Rechte vorbehalten.TERRA Datentechnik übernimmt keine Haftung für die Vollständigkeit, Richtigkeit und Aktualität der Angaben!
Rechtliche Hinweise  ·  Firmenprofil
Contact us   Last Updated: 12-November-2002 Webmaster