README 4.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. dis88
  2. Beta Release
  3. 87/09/01
  4. ---
  5. G. M. HARDING
  6. POB 4142
  7. Santa Clara CA 95054-0142
  8. "Dis88" is a symbolic disassembler for the Intel 8088 CPU,
  9. designed to run under the PC/IX operating system on an IBM XT
  10. or fully-compatible clone. Its output is in the format of, and
  11. is completely compatible with, the PC/IX assembler, "as". The
  12. program is copyrighted by its author, but may be copied and re-
  13. distributed freely provided that complete source code, with all
  14. copyright notices, accompanies any distribution. This provision
  15. also applies to any modifications you may make. You are urged
  16. to comment such changes, giving, as a miminum, your name and
  17. complete address.
  18. This release of the program is a beta release, which means
  19. that it has been extensively, but not exhaustively, tested.
  20. User comments, recommendations, and bug fixes are welcome. The
  21. principal features of the current release are:
  22. (a) The ability to disassemble any file in PC/IX object
  23. format, making full use of symbol and relocation information if
  24. it is present, regardless of whether the file is executable or
  25. linkable, and regardless of whether it has continuous or split
  26. I/D space;
  27. (b) Automatic generation of synthetic labels when no sym-
  28. bol table is available; and
  29. (c) Optional output of address and object-code informa-
  30. tion as assembler comment text.
  31. Limitations of the current release are:
  32. (a) Numeric co-processor (i.e., 8087) mnemonics are not
  33. supported. Instructions for the co-processor are disassembled
  34. as CPU escape sequences, or as interrupts, depending on how
  35. they were assembled in the first place. This limitation will be
  36. addressed in a future release.
  37. (b) Symbolic references within the object file's data
  38. segment are not supported. Thus, for example, if a data segment
  39. location is initialized to point to a text segment address, no
  40. reference to a text segment symbol will be detected. This limi-
  41. tation is likely to remain in future releases, because object
  42. code does not, in most cases, contain sufficient information to
  43. allow meaningful interpretation of pure data. (Note, however,
  44. that symbolic references to the data segment from within the
  45. text segment are always supported.)
  46. As a final caveat, be aware that the PC/IX assembler does
  47. not recognize the "esc" mnemonic, even though it refers to a
  48. completely valid CPU operation which is documented in all the
  49. Intel literature. Thus, the corresponding opcodes (0xd8 through
  50. 0xdf) are disassembled as .byte directives. For reference, how-
  51. ever, the syntactically-correct "esc" instruction is output as
  52. a comment.
  53. To build the disassembler program, transfer all the source
  54. files, together with the Makefile, to a suitable (preferably
  55. empty) PC/IX directory. Then, simply type "make".
  56. To use dis88, place it in a directory which appears in
  57. your $PATH list. It may then be invoked by name from whatever
  58. directory you happen to be in. As a minimum, the program must
  59. be invoked with one command-line argument: the name of the ob-
  60. ject file to be disassembled. (Dis88 will complain if the file
  61. specified is not an object file.) Optionally, you may specify
  62. an output file; stdout is the default. One command-line switch
  63. is available: "-o", which makes the program display addresses
  64. and object code along with its mnemonic disassembly.
  65. The "-o" option is useful primarily for verifying the cor-
  66. rectness of the program's output. In particular, it may be used
  67. to check the accuracy of local relative jump opcodes. These
  68. jumps often target local labels, which are lost at assembly
  69. time; thus, the disassembly may contain cryptic instructions
  70. like "jnz .+39". As a user convenience, all relative jump and
  71. call opcodes are output with a comment which identifies the
  72. physical target address.
  73. By convention, the release level of the program as a whole
  74. is the SID of the file disrel.c, and this SID string appears in
  75. each disassembly. Release 2.1 of the program is the first beta
  76. release to be distributed on Usenet.