<p>Does anyone know of a disassembler for <em>ARMV4i</em> executables and DLLs?</p>

<p>I've got a plug-in DLL I'm writing with a very rare <code>data abort</code> (&lt;5% of the time) that I have narrowed down to a specific function (via dumpbin and the address output by the <code>data abort</code>).  However, it is a fairly large function and I would like to narrow it down a little.  I know it's happening in a <code>memset()</code> call, but that particular function has about 35 of them, so I was hoping that by looking at the disassembly I could figure out where about the problem actually is.</p>

[{'answer_id': 23456, 'author': 'Greg Hewgill', 'author_id': 893, 'author_profile': 'https://Stackoverflow.com/users/893', 'pm_score': 0, 'selected': False, 'text': '<p>A couple of years ago I found an ARM disassembler I used while doing some embedded work. However, I don\'t remember its name - though I think it was part of a larger package like an emulator or something.</p>\n\n<p>In your case, could you ask your compiler to generate an assembly listing of the compiled code? That might help give you some scope.</p>\n\n<p>Failing that, you could break up your function into one or more new functions, if all you can get is the stack trace. Then break up the new function into one or more again. This is the tried-and-true "divide and conquer" method. And if you have 35 calls to memset() in one function, it might be a good idea from a design standpoint too!</p>\n\n<p>Update: I found the package I used: <a href="http://armphetamine.sourceforge.net/" rel="nofollow noreferrer">ARMphetamine</a>. It worked for the ARM9 code I was developing, but it looks like it hasn\'t been updated in quite some time.</p>\n'}, {'answer_id': 28825, 'author': 'Brian Lyttle', 'author_id': 636, 'author_profile': 'https://Stackoverflow.com/users/636', 'pm_score': 2, 'selected': False, 'text': '<p>I believe that <a href="http://www.hex-rays.com/idapro" rel="nofollow noreferrer">IDA Pro</a> will do what you want. It was mentioned in the O\'Reilly Security Warrior book and I\'ve seen it recommended on Windows Mobile developer forums.</p>\n'}, {'answer_id': 28847, 'author': 'Will Dean', 'author_id': 987, 'author_profile': 'https://Stackoverflow.com/users/987', 'pm_score': 3, 'selected': True, 'text': '<p>IDA Pro will definitely do ARM disassembly.  And they (Datarescue) once arranged me a licence at about 11PM local time, so I like to recommend them...</p>\n\n<p>I see from <a href="http://www.datarescue.com/idabase/" rel="nofollow noreferrer">http://www.datarescue.com/idabase/</a> that there\'s been some rearrangement of the company, but I guess it\'s still a good product.</p>\n\n<p>Here\'s the link to the new publisher: <a href="http://www.hex-rays.com/idapro/" rel="nofollow noreferrer">http://www.hex-rays.com/idapro/</a></p>\n'}, {'answer_id': 60263, 'author': 'Adam Davis', 'author_id': 2915, 'author_profile': 'https://Stackoverflow.com/users/2915', 'pm_score': 1, 'selected': False, 'text': '<p><a href="http://carolos.za.net/software.html" rel="nofollow noreferrer">ChARMeD</a> is a Windows Mobile / Pocket PC /  Win CE (for ARM CPUs) Disassembler and Assembler</p>\n\n<p>You might also look at BDASM, a shareware disassembler - later versions have ARM plugins.  The website seems to be down, but if you search for it you\'ll find the shareware distribution.</p>\n\n<p>The source code for the simple ARM disassembler, <a href="http://web.ukonline.co.uk/g.mccaughan/software/disarm.c-0.10" rel="nofollow noreferrer">DISARM</a>, is available as well.</p>\n\n<p>The binutils (linux compiler tools) objdump can be used to produce disassembly, "objdump -b binary -m arm7tdmi -D file_name"</p>\n\n<p>-Adam</p>\n'}]
['https://Stackoverflow.com/questions/22309', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/194/']