我试图在linux机器上使用arm-linux-gnueabi-objdump在我的kobo(~12Mb)上找到libnickel.so。 文件格式被正确检测为elf32-littlearm,并且所有操作码都是32位,如ARM所预期的那样;但突然输出方面的变化,显示非32位操作码:
===正确的ARM代码===
...
4dc288: 447b6802 ldrbtmi r6, [fp], #-2050 ; 0xfffff7fe
4dc28c: 4a06b11a bmi 6886fc <_ZN20N3BookInfoController12onBookParsedERK6Volume+0x54>
4dc290: b103589b ; <UNDEFINED> instruction: 0xb103589b
4dc294: e8bd4798 pop {r3, r4, r7, r8, r9, sl, lr}
4dc298: f7ff4008 ; <UNDEFINED> instruction: 0xf7ff4008
4dc29c: bf00bfb3 svclt 0x0000bfb3
4dc2a0: 00627fee rsbeq r7, r2, lr, ror #31
4dc2a4: 00682ef2 strdeq r2, [r8], #-226 ; 0xffffff1e ; <UNPREDICTABLE>
4dc2a8: 0001d51c andeq sp, r1, ip, lsl r5
====不正确的代码(?)====
004dc2ac <_ZN11BusyHandler10signalDoneEP8BusyData>:
4dc2ac: b5b0 push {r4, r5, r7, lr}
4dc2ae: 4605 mov r5, r0
4dc2b0: 480d ldr r0, [pc, #52] ; (4dc2e8 <_ZN11BusyHandler10signalDoneEP8BusyData+0x3c>)
4dc2b2: b082 sub sp, #8
4dc2b4: af00 add r7, sp, #0
4dc2b6: f107 0408 add.w r4, r7, #8
4dc2ba: 4478 add r0, pc
4dc2bc: 6078 str r0, [r7, #4]
4dc2be: f7d2 e884 blx 4ae3c8 <_ZN6QMutex4lockEv@plt>
...
也尝试在原生ARM机器上,结果相同。 我无法弄清楚发生了什么 - 这是一个错误吗?