12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- 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.
|