DIS88.9
上传用户:datang2001
上传日期:2007-02-01
资源大小:53269k
文件大小:3k
源码类别:

操作系统开发

开发平台:

C/C++

  1. .CD "dis88 (en disassembler [IBM]"
  2. .SX "dis88fR [fB(enofR] fIinfilefR [fIoutfilefR]"
  3. .FL "(eno" "List the object code along with the assembly code"
  4. .EX "dis88 a.out >listing" "Disassemble fIa.outfR"
  5. .EX "dis88 (eno a.out listing" "Ditto, but with object code"
  6. .PP
  7. fIDis88fR disassembles 8088 object code to the assembly language format
  8. used by 
  9. .MX  .
  10. It makes full use of
  11. symbol table information, supports separate 
  12. instruction and data space, and generates synthetic labels when needed. 
  13. It does not support 8087 mnemonics, symbolic data segment references, or 
  14. the ESC mnemonic.
  15. .PP
  16. The program is invoked by:
  17. .HS
  18. .Cx "dis88 [(eno] infile [outfile]"
  19. .HS
  20. The (eno flag causes object code to be listed. 
  21. If no outfile is given, fIstdoutfR is used.
  22. .PP
  23. The text segment of an object file is always padded to an even address.
  24. In addition, if the file has split I/D space, the text segment will be padded
  25. to a paragraph boundary (i.e., an address divisible by 16). Due to padding, the
  26. disassembler may produce a few spurious, but harmless, instructions at the end
  27. of the text segment.
  28. .PP
  29. Because the information to which initialized data refers cannot generally
  30. be inferred from context, the data segment is treated literally. Byte values
  31. (in hexadecimal) are output, and long stretches of null data are represented by
  32. appropriate fI.zerowfR pseudo-ops. 
  33. Disassembly of the bss segment, on the other
  34. hand, is quite straightforward, because uninitialized data is all zero by 
  35. definition. 
  36. No data is output in the bss segment, but symbolic labels are output
  37. as appropriate.
  38. .PP
  39. The output of operands in symbolic form is complicated somewhat by the
  40. existence of assembler symbolic constants and segment override opcodes. Thus,
  41. the program's symbol lookup routine attempts to apply a certain amount of
  42. intelligence when it is asked to find a symbol. If it cannot match on a symbol
  43. of the preferred type, it may output a symbol of some other type, depending on
  44. preassigned (and somewhat arbitrary) rankings within each type. Finally, if
  45. all else fails, it will output a string containing the address sought as a hex
  46. constant. For user convenience, the targets of branches are also output, in
  47. comments, as hexadecimal constants.
  48. .SS "Error Messages"
  49. .PP
  50. Various error messages may be generated as a result of problems encountered
  51. during the disassembly.
  52. They are listed below
  53. .HS.
  54. .in +3.20i
  55. .ta +2.75i +0.2i
  56. .ti -2.95i
  57. Cannot access input file (en Input file cannot be opened or read
  58. .ti -2.95i
  59. Cannot open output file (en Output file cannot be created
  60. .ti -2.95i
  61. Input file not in object format (en Bad magic number
  62. .ti -2.95i
  63. Not an 8086/8088 object file (en CPU ID of the file header is incorrect
  64. .ti -2.95i
  65. Reloc table overflow (en Relocation table exceeds 1500 entries
  66. .ti -2.95i
  67. Symbol table overflow (en Symbol table exceeds 1500 entries
  68. .ti -2.95i
  69. Lseek error (en Input file corrupted (should never happen)
  70. .ti -2.95i
  71. Warning: no symbols (en Symbol table is missing (use ast)
  72. .ti -2.95i
  73. Cannot reopen input file (en Input file was removed during execution
  74. .in -3.20i
  75. .SS "Author"
  76. .PP
  77. fIDis88fR  was written and
  78. copyrighted by G. M. Harding and is included here by permission. It may be
  79. freely redistributed provided that complete source code, with all copyright
  80. notices, accompanies any redistribution. This provision also applies to any
  81. modifications you may make. You are urged to comment such changes, giving,
  82. as a minimum, your name and complete address.