Looking at the output from dismipper (compiled on Fedora), I see this at the start :
dismipper -- a MIPS re-disassembler
Copyright (C)2005 John Maushammer -
http://www.maushammer.com/
Headers read: 12 sections, 15637 kB allocated. (firmware size 0x145c9c, 1303 kB)
Pass zero: Reading data... done. (bytes read = 0x12e20c)
Pass one: tracing program execution
Attempted to trace execution to address 7fffffff - not a multiple of 4
Warning - bad entry point in firmware.comments:
entry=0x80000180,".exception" // .exception
Attempted to trace execution to address 7fffffff - not a multiple of 4
Warning - bad entry point in firmware.comments:
entry=0x80000600,".boot" // .boot
<... lots more where that come from, finally getting to :>
Warning - bad function address in firmware.comments:
function=0x800311d0, "set lsb of status-word-1 to register a0"
Warning - bad function address in firmware.comments:
function=0x800311f0, "OR msb of status-word-1 with register a0"
Warning - bad function address in firmware.comments:
function=0x80031214, "if (a1 != 1) {status-word-2 |= ~a0} else {status-word-2 &= a0}"Pass two: dumping output
"
"firmware.o: file format elf32-littlemips
"
"Sections:
"Idx Name Size VMA LMA File off Algn
" 0 .spc0 00000210 bfc08000 bfc08000 00138fec 2**2
" CONTENTS, ALLOC, LOAD, CODE
" 1 .spc1 00000000 bfc09000 bfc09000 001391fc 2**0
" CONTENTS
" 2 .spc2 00000000 bfc09400 bfc09400 001391fc 2**0
" CONTENTS
" 3 .spc3 00000000 bfc09800 bfc09800 001391fc 2**0
" CONTENTS
" 4 .spd0 00000000 90008000 90008000 001391fc 2**0
" CONTENTS
" 5 .spd1 00000000 90009000 90009000 001391fc 2**0
" CONTENTS
" 6 .spd2 00000000 90009400 90009400 001391fc 2**0
" CONTENTS
" 7 .spd3 00000400 90009800 90009800 00138bec 2**2
" CONTENTS, ALLOC, LOAD, DATA
" 8 .exception 0000013c 80000180 80000180 000000d4 2**0
" CONTENTS, ALLOC, LOAD, READONLY, CODE
" 9 .boot 00000040 80000600 80000600 00000220 2**2
" CONTENTS, ALLOC, LOAD, READONLY, CODE
" 10 .text 0012dfc0 80000640 80000640 00000260 2**5
" CONTENTS, ALLOC, LOAD, READONLY, CODE
" 11 __ex_table 00000010 8012e600 8012e600 0012e220 2**2
" CONTENTS, ALLOC, LOAD, READONLY, DATA
" 12 .scratch 0000011c 8012e610 8012e610 0012e230 2**2
" CONTENTS, ALLOC, LOAD, READONLY, CODE
" 13 .scratchpad3 00000070 8012e72c 8012e72c 0012e34c 2**0
" CONTENTS, ALLOC, LOAD, READONLY, CODE
" 14 .data 0000a808 8012e7a0 8012e7a0 0012e3c0 2**3
" CONTENTS, ALLOC, LOAD, DATA
" 15 .data1 00000018 80138fa8 80138fa8 00138bc8 2**2
" CONTENTS, ALLOC, LOAD, DATA
" 16 .sbss 000005c4 80138fc0 80138fc0 00138be0 2**2
" ALLOC
" 17 .bss 0000c5d0 80139590 80139590 00138bec 2**4
" ALLOC
"Disassembly of section .spc0:
"
"bfc08000 <.spc0>:
" ...
bfc08028 ac850000 sw a1,0(a0) "...."
" ...
bfc08050 03e00008 jr ra "...."
bfc08054 00000000 nop "...."
bfc08058 27bdffd8 addiu sp,sp,-40 "...'"
My question is : from looking at this, can anyone with "good" dissassemblies tell me if I've got things goofed up somewhere (e.g. a compiler directive) or that this actually makes sense? (I suspect the former ...)
TIA
Editted : this firmware image came via the OPS download memory command, run on a Windows version and then pulled over a network as firmware.o