add directory study
This commit is contained in:
97
study/sabre/os/files/Executables/LIB.txt
Normal file
97
study/sabre/os/files/Executables/LIB.txt
Normal file
@@ -0,0 +1,97 @@
|
||||
|
||||
Document ID: Q79259
|
||||
|
||||
Product: Microsoft BASIC Compiler
|
||||
Title: Microsoft Library (.LIB) Format, Created by LIB.EXE
|
||||
|
||||
Updated: 27-DEC-1991
|
||||
Operating System Versions: 6.00 6.00B 7.00 7.10
|
||||
Operating Systems: MS-DOS
|
||||
|
||||
Summary:
|
||||
|
||||
This article describes the components of the Microsoft Library Format
|
||||
(for .LIB files created by the LIB.EXE Library Manager). The Microsoft
|
||||
Library Format is consistent between compatible Microsoft languages.
|
||||
While future library utilities will remain backward- compatible with
|
||||
the older library formats, the actual library format itself is subject
|
||||
to change. This information is taken from Chapter 5 of the "Microsoft
|
||||
C Developer's Toolkit Reference," which contains more in-depth
|
||||
information on the Microsoft Library Format.
|
||||
|
||||
This information applies to Microsoft QuickBasic versions 4.0, 4.0b,
|
||||
and 4.5 for MS-DOS, to Microsoft Basic Compiler versions 6.0 and 6.0b
|
||||
for MS-DOS, and to Microsoft Basic Professional Development System
|
||||
(PDS) versions 7.0 and 7.1 for MS-DOS.
|
||||
|
||||
More Information:
|
||||
|
||||
Library Header Record
|
||||
---------------------
|
||||
|
||||
Object code library .LIB files under MS-DOS always contain blocks of
|
||||
data in multiples of 512 bytes. The first record in the library is a
|
||||
library header. This record is structured the same as a Microsoft
|
||||
object-module-format (MS OMF) record. That is, the first byte of the
|
||||
record identifies the record's type, and the next two bytes specify
|
||||
the number of bytes remaining in the record. Note that the length
|
||||
field is byte-swapped (in other words, the low-order byte precedes the
|
||||
high-order byte). The record type for this library header is F0 hex
|
||||
(240 decimal).
|
||||
|
||||
Modules in a library always start at the beginning of a page. Page
|
||||
size is determined by adding three (one for the record type byte and
|
||||
two for the record length field itself) to the value in the record
|
||||
length field; thus the library header record always occupies exactly
|
||||
one page. Legal values for page size are given by the range of 2
|
||||
through the n, where n is a value from 4 through 15.
|
||||
|
||||
The four bytes immediately following the length field are a byte-
|
||||
swapped long integer specifying the byte offset within the library of
|
||||
the first block of the dictionary. The next two bytes are a byte-
|
||||
swapped word field that specifies the number of blocks in the
|
||||
dictionary. (Note: The Library Manager, LIB.EXE for MS-DOS, cannot
|
||||
create a library whose dictionary requires more than 251 512-byte
|
||||
pages.)
|
||||
|
||||
The next byte contains flags describing the library. One current flag
|
||||
definition is "0x01 = case sensitive". This applies to both regular
|
||||
and extended dictionaries. All other values are reserved for future
|
||||
use and should be 0. The remaining bytes in the library header record
|
||||
are not significant. This record deviates from the typical Microsoft
|
||||
OMF record in that the last byte is not used as a checksum on the rest
|
||||
of the record.
|
||||
|
||||
Object Modules
|
||||
--------------
|
||||
|
||||
The first object module in the library immediately follows the header.
|
||||
The first object module is followed in turn by all other object
|
||||
modules in the library. Each module is in Microsoft OMF. Individual
|
||||
modules are aligned so that they start at the beginning of a new page.
|
||||
If, as is commonly the case, a module does not occupy a number of
|
||||
bytes that is exactly a multiple of the page size, then its last block
|
||||
is padded with as many null bytes as are required to fill it. This
|
||||
special format is covered in detail in the "C Developer's Toolkit
|
||||
Reference."
|
||||
|
||||
Dictionary Blocks
|
||||
-----------------
|
||||
|
||||
The remaining blocks in the library compose the dictionary. The number
|
||||
of blocks in the dictionary is given in the library header. Dictionary
|
||||
length is in 512-byte blocks. Detailed information on the exact
|
||||
content and format of the dictionary are contained in the "C
|
||||
Developer's Toolkit Reference."
|
||||
|
||||
Extended Dictionary
|
||||
-------------------
|
||||
|
||||
The extended dictionary is optional and indicates dependencies between
|
||||
modules in the library. Versions of LIB.EXE earlier than version 3.09
|
||||
do not create an extended dictionary. The extended dictionary is
|
||||
placed at the end of the library. Again, see the "C Developer's
|
||||
Toolkit Reference" for details on the structure of the Extended
|
||||
Dictionary.
|
||||
|
||||
Additional reference words: 6.00 6.00b 7.00 7.10 4.00 4.00b 4.50
|
||||
Reference in New Issue
Block a user