Disassembler Download C
News 28/Oct/2012: The Boomerang source code has been converted from CVS to Subversion back in 2008;I've finally changed the instructions so that users will get the Subversion repository now.If you are working with a CVS copy, please generate diffs now while the CVS repository still exists.To help with this, the CVS instructions are still available here.I intend to delete the CVS repository in about a month, say early December. 3/Nov/2006: Gerard Krol has volunteered to become the new project admin. He hopes he will be able to help people interested in Boomerang using and understanding it, and he will try (with your help) to make Boomerang the finest decompiler available.We still suffer the loss of our main developers, so please contribute! 18/Sep/2006: The two main developers of Boomerang, QuantumG and Mike Van Emmerik, are withdrawingfrom further development of Boomerang. This is because both have joined a company that owns technologysufficiently similar to that of Boomerang that there is a conflict. Both will be able to answer emailqueries about how Boomerang works at present, but will not be able to comment on suggestions for changes.For more details, see this news item. 15/Sep/2006: The making page has a link to qt-4.1.4-vs2005.zip, which savesa lot of time and effort if compiling the Boomerang GUI with Visual Studio 2005. 14/Sep/2006: The Visual Studio 2005 project file is finally sorted out, so both the console and GUI(Qtgui2) versions of Boomerang can be made with Visual Studio 2005. 5/Sep/2006: The Windows-only GUI version of Boomerang is now deprecated. It has some problems with thehandling of clusters in threads, which there is no time to fix. If you want to continue using the Windows-onlyGUI, you can start with boomerang-win32.vcproj and work from there. The boomerang.vcproj file now makes theconsole version of Boomerang, which is a prerequisite for the qtgi2 version. Also deprecated are the XML loadingand saving facilities, and the transformation parser. Removing the xml code has the effect of making the Cygwinversion runnable again (no idea why).13/Jun/2006: A new alpha release (0.3) is now available for download. See the download page. For source code, use the CVS tag alpha-0_3.7/Jun/2006: QuantumG has started a blog chronicaling his daily activity on a new Qt4 based GUI for Boomerang, along with general Boomerang development and (eventually) other projects he is working on.12/May/2006: Sourceforge have changed the names of the CVS servers. That means that existingrepositories will not work as they stand. You can change the name with a few Unix commands like this:Create a file called changeit with this contents:mv $1 $1.oldsed -e s/@cvs\.sourceforge\.net/@boomerang.cvs.sourceforge.net/ $1.old > $1chmod +x changeitfind . -name Root -exec /absolute/path/to/changeit \;Try to execute this command only once, otherwise the Root.old files will be overwritten.Of course, if you have made no changes to your checked out source, you can just get a freshcheckout. The changes are listed in the FAQ question13, but the only changeis from cvs.sourceforge.net to boomerang.cvs.sourceforge.net.(Also note that the ":80" as was used on the cvs page doesn't workany more either.)We are sorryfor the inconvenience, but this is out of our hands. 10/Apr/2006: Cygwin doesn't seem to be able to compile the loader/MachOBinaryFile.cppsource code, so until some kind soul who knows about such things can fix it, using theMachOBinaryFile loader is now disabled if the host is Cygwin.At least that way, a Cygwin hosted Boomerang will compile, and can decompile programs other thanin the MachO binaryfile format.
disassembler download c
Since I have had very intensive encounters with this processor during my PPGstudies, I came across the fact that there is very few information about it onthe Internet. The 6809 processor is quite old, but is still used by somedetermined groups (see the Flex UserGroup, for example). What isn't there, however, is a good freeware 6809assembler and disassembler, so I created these from the fundamental parts thatfloat around.
There's a 6809/6309 line disassembler somewhere on the 'net (here; at the time of this writing it was still valid), done by ArtoSalmi. I've enhanced it up to a pointwhere it's really useful. It can read and disassemble files in binary, IntelHex, Motorola S1, and Flex9 binary format. To get a really usable output, youcan pass an additional information file that defines code, data parts, labels,data format (character, binary, decimal, hex, label), comments, line comments,and much more.
DisC was originally written in Borland C++ 3.0 (running on DOS), but now i dont have the compiler. Also i find that not many people are using it these days, so i have "ported" DisC to Win32! I have compiled and successfully executed DisC using Microsoft Visual C++ 6.0, though there shouldnt be any problems with other Win32 compilers. But once small quirk - you must have a front-end program called "PrepDisC" (it is also included with the downloads listed below!) which is compiled as a DOS executable using a DOS C compiler like TurboC, and DisC will use this program to convert the input program which you want to decompile, into its own internal format and then do the actual decompilation.
Please note that this code was written when i was trying to learn C++, so it is not a very well commented code, but dont hesitate to download and have a look - i have added quite a few comments at very important places and that should help you. If you already have a good knowledge of decompilation and the 8086 assembly language, then it would be a breeze for you!
Please take a look at the README.TXT files in the source distribution for instructions. Make sure you also download the TurboC compiler shown above, because you need that to test DisC - after all, this is a decompiler for TurboC only! Also make sure you have compiled the file "prepdisc.c" using TurboC on DOS, and store the file "prepdisc.exe" in the same directory as the DisC executable.
1. Overview2. Usage2.1 Command line option overview2.2 Command line options in detail3. Detailed workings3.1 Supported CPUs3.2 Attribute map3.3 Labels3.4 Info File4. Info File Format4.1 Comments4.2 Specifying global options4.3 Specifying Ranges4.4 Specifying Labels4.5 Specifying Segments4.6 Specifying Assembler Includes4.7 An Info File Example5. Copyright1. Overviewda65 is a disassembler for 6502/65C02 code. It is supplied as a utility withthe cc65 C compiler and generates output that is suitable for the ca65macro assembler.
Besides generating output for ca65, one of the design goals was that the useris able to feed additional information about the code into the disassembler,for improved results. This information may include the location and size oftables, and their format.
---------------------------------------------------------------------------Usage: da65 [options] [inputfile]Short options: -g Add debug info to object file -h Help (this text) -i name Specify an info file -o name Name the output file -v Increase verbosity -F Add formfeeds to the output -s Accept line markers in the info file -S addr Set the start/load address -V Print the disassembler versionLong options: --argument-column n Specify argument start column --comment-column n Specify comment start column --comments n Set the comment level for the output --cpu type Set cpu type --debug-info Add debug info to object file --formfeeds Add formfeeds to the output --help Help (this text) --hexoffs Use hexadecimal label offsets --info name Specify an info file --label-break n Add newline if label exceeds length n --mnemonic-column n Specify mnemonic start column --pagelength n Set the page length for the listing --start-addr addr Set the start/load address --sync-lines Accept line markers in the info file --text-column n Specify text start column --verbose Increase verbosity --version Print the disassembler version---------------------------------------------------------------------------
The default (no CPU given on the command line or in the GLOBAL section ofthe info file) is the 6502 CPU. The disassembler knows all "official" opcodesfor this CPU. Invalid opcodes are translated into .byte commands.
With the command line option --cpu, thedisassembler may be told to recognize either the 65SC02 or 65C02 CPUs. Thelatter understands the same opcodes as the former, plus 16 additional bitmanipulation and bit test-and-branch commands. Using 6502x as CPU the illegal opcodes of 6502 CPU are detected and displayed. 6502dtv setting recognizes the emulated CPU instructons of the C64DTV device.
The disassembler works by creating an attribute map for the whole addressspace ($0000 - $FFFF). Initially, all attributes are cleared. Then, anexternal info file (if given) is read. Disassembly is done in several passes.In all passes, with the exception of the last one, information about thedisassembled code is gathered and added to the symbol and attribute maps. Thelast pass generates output using the information from the maps.
Some instructions may generate labels in the first pass, while most otherinstructions do not generate labels, but use them if they are available. Amongothers, the branch and jump instructions will generate labels for the targetof the branch in the first pass. External labels (taken from the info file)have precedence over internally generated ones, They must be valid identifiersas specified for the ca65 assembler. Internal labels (generated by thedisassembler) have the form Labcd, where abcd is the hexadecimaladdress of the label in upper case letters. You should probably avoid usingsuch label names for external labels.
The info file is used to pass additional information about the input code tothe disassembler. This includes label names, data areas or tables, and globaloptions like input and output file names. See the next section for more information.