I made a disassembler for Amiga "hunk" executables. It uses the same syntax as my compiler (NOWUT). Only recognizes code, data, bss, and reloc32 hunks. Likely to choke on other ones.
Under ideal circumstances the output can be fed back into my compiler to generate a duplicate of the original program. However this is dependant on the input program using only plain 68000 instructions, not having data mixed in the code hunk, and no extension words or short addresses because these aren't supported by the NOWUT 68K assembler yet. There is also a limit to program size because of fixed buffer allocations.
http://www.hyakushiki.net/misc/dehunk90.zipThis includes an Amiga build and a Win32 build.
example of disassembly:
; De-hunk version 0.90 : amtest.run
; number of hunks: 00000003
; first hunk: 00000000
; last hunk: 00000002
; size of hunk: 00000024 hunk load address: 0040D5B8
; size of hunk: 00000004 hunk load address: 0040D5DC
; size of hunk: 0000002C hunk load address: 0040D5E0
; Code hunk size: 00000024
; Reloc hunk
; count: 00000001 section: 00000001
; hunk end
; Data hunk size: 00000004
; hunk end
; BSS hunk size: 0000002C
; hunk end
; end of file
sectionbss
resb $0000002C ; $0040D5E0
sectiondata
ld0001:
db $00,$4C,$4B,$40 ; $0040D5DC .LK@
sectioncode
asm
move a6.d,[a7-].d ; $0040D5B8 2F0E
move a7.d,a6.d ; $0040D5BA 2C4F
sub $04,a7.d ; $0040D5BC 598F
move $00989680,d0.d ; $0040D5BE 203C 0098 9680
move d0.d,[a6+$FFFC].d ; $0040D5C4 2D40 FFFC
lc0000:
sub $01,[ld0001].d ; $0040D5C8 53B9 0040 D5DC
bne lc0000 ; $0040D5CE 6600 FFF8
move $00,d0.d ; $0040D5D2 7000
move a6.d,a7.d ; $0040D5D4 2E4E
move [a7+].d,a6.d ; $0040D5D6 2C5F
rts ; $0040D5D8 4E75
dw $7575 ; $0040D5DA 7575