vAVRdisasm - Free AVR Disassembler Version 1.0 Released!

I’ve finished writing and finalizing my first disassembler, for the AVR architecture. I discovered that avrdisasm, avrdasm, disavr, and even dasmavr names were all taken, so I went eventually went with vavrdisasm.

vAVRdisasm is a finished and working AVR disassembler. It should work on most *nix systems, as well as a Cygwin environment.

Here is an excerpt from the README that gives a brief summary of its functionality:
vAVRdisasm is an AVR program disassembler. It supports all 136 AVR instructions as defined by the Atmel AVR Instruction Set, revision 0856E-AVR-11/05.

This single-pass disassembler can handle Atmel Generic, Intel HEX, and Motorola S-Record formatted files containing valid AVR program binaries.

vAVRdisasm features a handful of formatting options, including:

  • Printing the instruction addresses alongside disassembly, enabled by default
  • Printing of the destination comments of relative branch/jump/call instructions, enabled by default
  • Ghetto Address Labels (see “Ghetto Address Labels” section)
  • .DW data word directive for data not recognized as an instruction during disassembly.

The heart of vAVRdisasm is its “Ghetto Address Labels” feature. With this feature, vAVRdisasm can produce directly assemble-able disassembly that can be easily modified without having to manually format the disassembly (i.e. adjusting relative branch/jump/call distances). This means you can disassemble a program, add, remove, and modify any instructions, and directly re-assemble it.

See the vAVRdisasm page for a complete description of vAVRdisasm, its usage, and the links to download the disassembler.

Print This Post Print This Post

1 Comment »

  1. VS Electronics and Embedded Development » vPICdisasm - Free Mid-Range PIC Disassembler Version 1.0 Released! Said,

    January 6, 2007 @ 3:56 am

    [...] This post may hold a striking resemblence to a previous post, but don’t worry, it’s no deja-vu. I figured I’d also write a PIC disassembler, based on my previous AVR disassembler. The AVR disassembler’s flexible codebase makes it easy to implement other architectures with instruction opcodes of 16-bits or less. This disassembler features everything the previous one did, but also with a few new handy features. [...]

RSS feed for comments on this post · TrackBack URI

Leave a Comment