0

我正在使用 Linaro 工具链在汇编和 C 中设计一个 AArch64 应用程序,并且经常使用 objdump 来查看我自己的反汇编二进制文件。但是,objdump 不会对文件的一部分进行解码,而是将其视为数据。它总是发生在源代码中的第二个标签之后。

例如,这段代码:

.global _Reset

_Reset:

BL get_cpuid
CBNZ x0, inf_loop

LDR     x0, =page_table_base      
LDR     x1, =0x0000000000000601 
STR     x1, [x0, #0x00]
test:
LDR     x1, =0x0060000040000601
STR     x1, [x0, #0x08]
...

拆卸到

Disassembly of section .startup:

0000000000000000 <_Reset>:
       0: 94000024  bl  90 <get_cpuid>
       4: b50004c0  cbnz  x0, 9c <inf_loop>
       8: 58000880  ldr x0, 118 <TXTN+0x3>
       c: 580008a1  ldr x1, 120 <TXTN+0xb>
      10: f9000001  str x1, [x0]

0000000000000014 <test>:
      14: 580008a1  .word 0x580008a1
      18: f9000401  .word 0xf9000401
...

为什么会这样?

4

0 回答 0