|
|
1
2
步骤4:一些操作码引用与操作码位置相关的内存。例如,函数可能有一个常量或静态数据段。如果是这样,代码可能会选择在函数开始之前(或在函数结束之后)放置它,并通过说“提前46字节获取内存”来引用它。这就是位移——它是寄存器(在本例中是EIP)内容的偏移量,用于引用相对于寄存器内容的数据。 步骤5
操作码的操作数通常存储在操作码之后。所以你可能有这样安排的一些记忆:
如果只将EIP移动到
步骤6一个“有效”地址只是一个绝对地址(相对于内存的开始),而书中所指的“复杂”地址是相对于其他地址(通常是寄存器的内容)。
步骤4显示操作码可能不引用绝对内存地址。它可以很容易地指代一个相对的。事实上,程序经常引用与某些寄存器相关的地址。例如,如果您
问题是,内存并不能真正理解这样的相对地址。它只理解绝对的。因此,为了访问相对地址,处理器必须首先将该5添加到EAX中的任何值,以计算绝对地址。然后,它可以将该地址发送到内存控制器并使其被理解。 我使用过两种基本类型的相对地址(还有更多我没有)。
记忆亲戚花了我一段时间才明白。假设您在寄存器包含
|
|
|
Lue · 慈善机构如何衡量捐赠的CPU使用率? 8 年前 |
|
|
Dusol · 使用多核时是否可能超出带宽限制? 8 年前 |
|
|
Adelin · ISA存储在哪里?如何准确地考虑它? 8 年前 |
|
|
St.Antario · 了解cpu寄存器 8 年前 |