ARM汇编中的函数地址有一个字节偏移量?

时间:2016-05-03 13:03:27

标签: assembly arm

例如,我有objdump获得的以下汇编代码。 f()的地址为080001d4。但printf("%x", f)输出080001d5f()可以(*((int (*)())080001d5))() (*((int (*)())080001d4))()完成080001d4 <f>: 80001d4: 2000 movs r0, #0 80001d6: 4770 bx lr

为什么函数地址中有一个字节偏移?

{{1}}

1 个答案:

答案 0 :(得分:3)

ARM有两种指令模式,地址的最低有效位用于指示给定函数使用的模式。 Thumb模式的奇数地址,甚至是ARM模式的地址。

即使您使用-marm开关重新编译它,地址仍然是。