Robert de Bath 2233d47f9d Import Dev86src-0.14.5.tar.gz 25 years ago
..
Makefile 2233d47f9d Import Dev86src-0.14.5.tar.gz 10 years ago
README fe22c37817 Import Dev86-0.0.4.tar.gz 10 years ago
ansi.h fe22c37817 Import Dev86-0.0.4.tar.gz 10 years ago
dis.h f8de35da65 Import Dev86src-0.0.9.tar.gz 10 years ago
dis88.1 f8de35da65 Import Dev86src-0.0.9.tar.gz 10 years ago
disfp.c c218c617b5 Import Dev86src-0.0.8.tar.gz 10 years ago
dishand.c c218c617b5 Import Dev86src-0.0.8.tar.gz 10 years ago
dismain.c f8de35da65 Import Dev86src-0.0.9.tar.gz 10 years ago
disrel.c c218c617b5 Import Dev86src-0.0.8.tar.gz 10 years ago
distabs.c f8de35da65 Import Dev86src-0.0.9.tar.gz 10 years ago
old_a.out.h fe22c37817 Import Dev86-0.0.4.tar.gz 10 years ago

README

dis88
Beta Release
87/09/01
---
G. M. HARDING
POB 4142
Santa Clara CA 95054-0142


"Dis88" is a symbolic disassembler for the Intel 8088 CPU,
designed to run under the PC/IX operating system on an IBM XT
or fully-compatible clone. Its output is in the format of, and
is completely compatible with, the PC/IX assembler, "as". The
program is copyrighted by its author, but may be copied and re-
distributed freely provided that complete source code, with all
copyright notices, accompanies any distribution. This provision
also applies to any modifications you may make. You are urged
to comment such changes, giving, as a miminum, your name and
complete address.

This release of the program is a beta release, which means
that it has been extensively, but not exhaustively, tested.
User comments, recommendations, and bug fixes are welcome. The
principal features of the current release are:

(a) The ability to disassemble any file in PC/IX object
format, making full use of symbol and relocation information if
it is present, regardless of whether the file is executable or
linkable, and regardless of whether it has continuous or split
I/D space;

(b) Automatic generation of synthetic labels when no sym-
bol table is available; and

(c) Optional output of address and object-code informa-
tion as assembler comment text.

Limitations of the current release are:

(a) Numeric co-processor (i.e., 8087) mnemonics are not
supported. Instructions for the co-processor are disassembled
as CPU escape sequences, or as interrupts, depending on how
they were assembled in the first place. This limitation will be
addressed in a future release.

(b) Symbolic references within the object file's data
segment are not supported. Thus, for example, if a data segment
location is initialized to point to a text segment address, no
reference to a text segment symbol will be detected. This limi-
tation is likely to remain in future releases, because object
code does not, in most cases, contain sufficient information to
allow meaningful interpretation of pure data. (Note, however,
that symbolic references to the data segment from within the
text segment are always supported.)

As a final caveat, be aware that the PC/IX assembler does
not recognize the "esc" mnemonic, even though it refers to a
completely valid CPU operation which is documented in all the
Intel literature. Thus, the corresponding opcodes (0xd8 through
0xdf) are disassembled as .byte directives. For reference, how-
ever, the syntactically-correct "esc" instruction is output as
a comment.

To build the disassembler program, transfer all the source
files, together with the Makefile, to a suitable (preferably
empty) PC/IX directory. Then, simply type "make".

To use dis88, place it in a directory which appears in
your $PATH list. It may then be invoked by name from whatever
directory you happen to be in. As a minimum, the program must
be invoked with one command-line argument: the name of the ob-
ject file to be disassembled. (Dis88 will complain if the file
specified is not an object file.) Optionally, you may specify
an output file; stdout is the default. One command-line switch
is available: "-o", which makes the program display addresses
and object code along with its mnemonic disassembly.

The "-o" option is useful primarily for verifying the cor-
rectness of the program's output. In particular, it may be used
to check the accuracy of local relative jump opcodes. These
jumps often target local labels, which are lost at assembly
time; thus, the disassembly may contain cryptic instructions
like "jnz .+39". As a user convenience, all relative jump and
call opcodes are output with a comment which identifies the
physical target address.

By convention, the release level of the program as a whole
is the SID of the file disrel.c, and this SID string appears in
each disassembly. Release 2.1 of the program is the first beta
release to be distributed on Usenet.