列表文件中括号的含义是什么?

时间:2012-07-23 15:53:02

标签: assembly

列表文件中括号的含义是什么? 例如,

0000001C E8(00000000)

还有其他类型的括号吗?他们的意思是什么?

1 个答案:

答案 0 :(得分:3)

它们显示了在链接时应用重定位的位置。

[nnnnnnnn]显示绝对重定位(当链接器执行重定位时,某些节的基址将被添加到偏移量中)。例如一旦二进制文件完全链接,push str2指令中的那些字节将被更改为包含.data + 0x09的基址。

(nnnnnnnn)显示了PC相对重定位(用于调用和分支,其中最终值必须相对于下一条指令的地址)。例如调用func2指令中的字节将使用func2的最终地址与后续指令的地址(调用func3)之间的差异进行更新。

调用func3指令本身没有括号,因为在这种情况下不需要重定位 - 调用指令需要相对地址,但func3在同一部分内,因此相对地址已知(以下指令是在.text + 0x21,而func3在.text + 0x2c,所以不管.text的最终地址,相对地址都是0xb。

发现于:here