-
Notifications
You must be signed in to change notification settings - Fork 1
/
README
51 lines (39 loc) · 1.76 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
decompify
An MS-DOS COM files disassembler for Linux.
=============================================
Introduction
------------
This project comes from an Assembly Languages and Computer Organization class
assignment from State University of Campinas, Brazil.
The code is licensed under the General Public License (GPL) and should be used
by other students who want to learn Assembly.
It's written for NASM and should compile under any Linux 2.6.x kernel.
Acknowledgements
----------------
The design of the program was heavily influencied by Marius Gedminas' Disasm,
which was also a school project and had the same purpose, but it generated
a disassembly suitable for TASM.
For more information, please check Marius' site: http://gedmin.as/disasm
Christian Fowelin's libASM was of great help as well. Even though I only
used one of his functions (WriteHex) directly, the simple looking at his
code is of great value.
libASM: http://www.fowelin.de/christian/computer/libASM
Instruction set
---------------
decompify follows the university assignment and only implements the Intel 186
instruction set (not even 386 instructions are implemented).
The instructions which are implemented can be found in assignment/proj02.pdf.
Multiple mnemonics
------------------
Some instructions have more than one possible mnemonic which corresponds to
the same opcode, such as WAIT/FWAIT and XLAT/XLATB.
In these cases, the mnemonic output by ndisasm was chosen.
Invalid bytes
-------------
In case decompify finds an erroneus byte in the code, it just writes a
db BYTE
in the code.
Jumps and labels
----------------
Currently, jumps and branches do not generate labels. The code generated inserts
the literal address of the jump after the mnemonic.