Table of Limitations

ID Number: Q11172

2.40 3.04

MS-DOS

Summary:

The following is a reference table of limitations for the various

versions of LINK (following the table are some footnotes):

LINKER LIMITATIONS

------------------

============================================================================

| | | | | | |

| | | | MAXIMUM | | |

| | MAXIMUM | | NUMBER | | |

| | NUMBER OF | MAXIMUM | SYMBOLS | MAXIMUM | MAXIMUM |

LINKER | SYMBOL | LOADTIME | NUMBER | PER | NUMBER | NUMBER |

VERSION | TABLE | RELOCATIONS | PUBLICS | MODULE | GROUPS | OVERLAYS |

| | | (*) | | (**) | |

===========|========|=============|=========|=========|=========|==========|

| | | | | | |

2.40 | 64K | 12,000 | 1536 | 511 | 10 | 63 |

------ | | | | | | |

PAS/FOR 3.2| | | | | | |

-----------|--------|-------------|---------|---------|---------|----------|

2.41 | | | | | | |

------ | 64K | 12,000 | 1536 | 511 | 10 | 63 |

PAS/FOR 3.2| | | | | | |

-----------|--------|-------------|---------|---------|---------|----------|

2.44 | | | | | | |

------ | 64K | 12,000 | 1536 | 511 | 10 | 63 |

MASM 1.27 | | | | | | |

-----------|--------|-------------|---------|---------|---------|----------|

| | | | | | |

2.45 | 64K | 12,000 | 1536 | 511 | 10 | 63 |

| | | | | | |

-----------|--------|-------------|---------|---------|---------|----------|

| | | | | | |

2.48 | 256K | 12,000 | 1536 | 511 | 10 | 63 |

| | | | | | |

-----------|--------|-------------|---------|---------|---------|----------|

3.00 | | | | | | |

------ | 256K | 16,384 | 7700- | 1,023 | 10 | 63 |

MASM 3.00 | | | 8700 | | | |

| | | | | | |

-----------|--------|-------------|---------|---------|---------|----------|

3.01 | | | | | | |

------ | 256K | 32,768 | 7700- | 1,023 | 19/20 | 63 |

PASCAL 3.3 | | /65,536 | 8700 | | | |

C 3.0 | | | | | | |

-----------|--------|-------------|---------|---------|---------|----------|

3.02 | | | | | | |

------ | 256K | 32,768 | 7700- | 1,023 | 19/20 | 63 |

FORTRAN 3.3| | /65,536 | 8700 | | | |

| | | | | | |

-----------|--------|-------------|---------|---------|---------|----------|

| | | | | | |

3.03 | 256K | 32,768 | 7700- | 1,023 | 19/20 | 63 |

| | /65,536 | 8700 | | | |

| | | | | | |

-----------|--------|-------------|---------|---------|---------|----------|

| | | | | | |

3.04 | 256K | 32,768 | 7700- | 1,023 | 20/21 | 63 |

| | /65,536 | 8700 | | | |

| | | | | | |

===========|========|=============|=========|=========|=========|==========|

======================================================================

| MAXIMUM | MAXIMUM | MAXIMUM NO.| MAXIMUM NO.| |

LINKER | NUMBER | NUMBER | GROUPDEFS | SEGMENTS | NOTES |

VERSION | SEGMENTS | LIBRARIES | PER MODULE | PER MODULE | |

| | | | | |

===========|==========|===========|============|============|========|

| | | | | |

2.40 | 244 | 8 | 10 | 256 | |

------ | | | | | |

PAS/FOR 3.2| | | | | |

-----------|----------|-----------|------------|------------|--------|

2.41 | | | | | |

------ | 244 | 8 | 10 | 256 | 1 |

PAS/FOR 3.2| | | | | |

-----------|----------|-----------|------------|------------|--------|

2.44 | | | | | |

------ | 1,000 | 8 | 10 | 254 | |

MASM 1.27 | | | | | |

-----------|----------|-----------|------------|------------|--------|

| | | | | |

2.45 | ? | 8 | 10 | 254 | 1 |

| | | | | |

-----------|----------|-----------|------------|------------|--------|

| | | | | |

2.48 | 128 DEF. | 8 | 10 | 254 | |

| 1,024 | | | | |

-----------|----------|-----------|------------|------------|--------|

3.00 | | | | | |

------ | 128 DEF. | 16 | 20 | 254 | 2,3,4 |

MASM 3.00 | 1,024 | | | | |

| | | | | |

-----------|----------|-----------|------------|------------|--------|

3.01 | | | | | |

------ | 128 DEF. | 16 | 20 | 255 | 2,3,4,5|

PASCAL 3.3 | 1,024 | | | | |

C 3.0 | | | | | |

-----------|----------|-----------|------------|------------|--------|

3.02 | | | | | |

------ | 128 DEF. | 16 | 20 | 255 | 2,3,4,5|

FORTRAN 3.3| 1,024 | | | | |

| | | | | |

-----------|----------|-----------|------------|------------|--------|

| | | | | |

3.03 | 128 DEF. | 16 | 20 | 255 | 2,3,4,5|

| 1,024 | | | | |

-----------|----------|-----------|------------|------------|--------|

3.04 | | | | | |

| 128 DEF. | 16 | 20 | 255 | 2,3,4 |

| 1,024 | | | | 5,6 |

===========|==========|===========|============|============|========|

The numbers given for maximum number of publics are guidelines

only, and the actual limits will be somewhat more or less for any

given program.

For Versions 3.01 and later there is a low and a high limit for the

number of groups. The linker always defines an entry for "DGROUP".

Therefore, if your program does not define this, it effectively has the

lower limit.

1. Versions 2.41 and 2.45 of the linkers include many problems.

They are supposed to run under DOS Version 1.x. However, do not use

them with DOS Version 2.0 or later.

2. /OVERLAYINTERRUPT allows you to select different interrupt

numbers (255 possible) for passing control to interrupts.

3. /STACK can be used to reduce the stack size or to increase up to

64K (do not use this with Microsoft FORTRAN/Pascal).

4. With MS-DOS, /SEGMENTS is used to adjust total number of

segments in .EXE from 0 TO 1024. DEFAULT is 128. With PC-DOS, /X is

used to adjust total number of segments in .EXE from 0 to 1024.

Default is 256.

5. The maximum number of load time relocations is 512K if you are

using EXEPACK, otherwise the maximum number is 32K.

6. The maximum number is 21 if one of the load time relocations is

called "DGROUP".

7. The maximum stack size for all versions is one segment (65536

bytes).