1

我正在浏览一些代码示例,我看到了以下行:

LDR R0, =(byte_1F30B65 - 0x756F70)

我似乎无法理解byte_十六进制数字之前的含义。我检查了一下,发现了更多,例如

DCD unk_1944AA0

DCD off_1E78280

谁能解释这些是什么意思?

注意:这段代码是反编译的,不是原始代码。

4

1 回答 1

2

这些是由 IDA 或其他一些反汇编程序自动生成的标签,遵循 IDA 命名自动生成标签的约定。byte_前缀表示 IDA 认为一个单字节变量位于标签所指的位置,前缀off_表示 IDA 认为指针变量位于标签的位置,ukn_前缀表示 IDA 不知道那里有什么。十六进制数是标签所指的地址。

off_前缀来自 x86 程序集,其中所有地址都有一个偏移量和段部分。标签位置的变量off_将仅包含地址的偏移部分。然而,在 32 位和 64 位 x86 程序集中,通常可以安全地假设偏移量是相对于覆盖整个 32 位或 64 位地址空间的“平面”段。

于 2018-06-18T13:47:11.427 回答