home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Simtel MSDOS 1992 September
/
Simtel20_Sept92.cdr
/
msdos
/
pgmutl
/
objsc101.arc
/
OBJSCN.TXT
< prev
Wrap
Text File
|
1987-01-05
|
4KB
|
85 lines
Documentation for OBJSCN.C Version 1.01
This program is based on information from the article ".OBJ LESSON" in
the October 1985 PCTJ, and uses the notation from that article. Certain
errors in the article, however, became apparent while implementing the
program, so be cautious in drawing conclusions when the program code and
the article appear to contradict each other.
The rather cryptic notation used in the FIXUPP record translations refers
to the "frame" location to undergo the fix, the "target" location involved,
and the method used by the linker to determine these. In the report, the
"ofs=" value is the offset within the previous LEDATA record to which this
FIXUPP refers.
Fx and Tx refer to Frame and Target methods respectively. T0-T3 indicate
index/displacement; T4-T7 and F0-F3 indicate index only. The low two bits
indicate SEG if 00, GRP if 01, or EXT if 10; that is, T6 indicates that the
target is specified by an index into the EXT name list.
The "fi" and "ti" entries refer to Frame/Target index values if the method
involves a GRP, SEG, or EXT reference, or to the thread ID number if the
method indicates a previous-thread reference (method>7). The "tos=" field,
if present, is the target displacement within the segment indicated by the
"ti" index or the thread ID number.
The GRPDEF record is not decoded in this version. The first value shown is
the LNAMES index of the name of the group being defined. The "ff" bytes
indicate nothing; the bytes following each "ff" are the SEG indices of the
segments which constitute the group.
Neither is the MODEND record decoded. A 2-byte record with value "00 74"
is normal end-of-module with no specified entry address. A longer record with
initial byte "c1" indicates that an entry address is specified. The last
three bytes of the record (before the checksum byte) indicate the segment
index and offset of the entry point.
Any record type not recognized by the program will be reported as a 2-digit
hex value, followed by the decimal length of the record. The bytes of the
record will then be reported as a stream of hex values. The sole exception is
a record type of "00"; this value, not used by any OBJ format, is ignored by
the program, to permit skipping over null filler in MS-format LIB files.
Direct questions and comments to Jim Kyle, 76703,762.
..jk.. 12/02/86
addendum--
After the package was uploaded to MSOFT, I received the following message
from Daniel Cerutti. His additions have been included in this new version
(version 1.01) with much gratitude!
Date: 04-Jan-87 07:22 CST
From: Daniel Cerutti [76267,426]
Subj: OBJSCN - Object file dump
Jim --
I have downloaded OBJSCN.ARC. This is a very useful tool for
examining object files. I have started a similar development
as yours a few weeks ago, but I had no time to continue it.
So may be I can help you continuing the development of OBJSCN.
The reference document I use is the Microsoft MS-DOS Programmer's
Reference (Document no. 8411-310-02, part no. 036-014-012) which
includes the description of Intel Object Module Format as used
by the Microsoft linker.
Below is additional code to handle comment records class used
by the linker. I have included support for the dynamic link
records used by the DOS 4 / Windows linker (was documented
in the material from the Microsoft Windows developer's conference).
I would like to include code for the new records type used by
Microsoft C 4.0 (type B0 hex), but have no doc on it. These
records define global data, including data size definitions,
but I am not sure of the format.
Sorry for my english (I am swiss). I hope this is helpful
to you. Regards.
Daniel Cerutti.
Compuserve: 76267,426
BIX: dcerutti