Skip to content

madmoose/dizzy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

62 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dizzy - an x86_16 DOS executable disassembler.

So, ehm, hi. This is dizzy, a little disassembler I built for 16 bit MS-DOS
executables.

It disassembles by tracing through the executable image, starting at the initial
CS:IP as defined in the EXE header, following all jumps and calls it finds. For
every byte it encounters, it jots down which bytes are OPs, and uses this when
it does the final write to screen.

It also attempts to do register tracing. This means that it remembers when a
known value (immediate or constant) is put in a register, and when registers
with known values are moved to other registers, etc. This is useful for finding
segments in the executable and annotating interrupt calls, amongst other things.
Currently the register tracing is intermingled with the code tracing and done
with minimal regard to code flow.
NOTE: Register tracing was removed in the Big Rewrite. It'll be back.

Also recently hacked in was the ability to name functions in the disassembly.
The disassembler even comes pre-packaged (read: hardcoded...) with a short list
of function names for Zak McKracken and the Alien Mindbenders, taken from
ScummVM.

Anyway, enjoy!

BUILDING

On Mac OS X 10.6:

build.sh  builds everything.
run.sh    builds and runs.

On other systems:

Probably doesn't build cleanly on anything other than Mac OS X 10.n. Patches
accepted! (But please, nothing involving automake...)

RUNNING

./a.out <path/to.exe>

TODO

There's a confusion of c strings and c++ std::strings in the code. This needs a
decision.

... lots of other stuff. Happy happy joy joy :)

CONTACT

Hit me up on irc.freenode.net, nick madmoose.

About

dizzy - an x86_16 DOS executable disassembler.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published