gpt4 book ai didi

linux - IA-32 中的寻址模式

转载 作者:太空狗 更新时间:2023-10-29 11:08:48 26 4
gpt4 key购买 nike

我在IA-32中搜索寻址模式,但没有看到任何网站或文章对寻址模式进行了简单的解释。我需要一篇文章或其他东西,通过内存变化过程中的一些图片简单地解释这件事,并通过图片指定地址模式。

我知道在 IA-32 中,寻址的一般形式遵循以下形式:

分段 + 基础 +(索引 * 比例)+ 位移

我想知道位移、比例、索引和基数的确切含义。因为我也不懂英语,所以我不得不搜索它们,但我没有找到这种情况下单词的技术含义(我的意思是汇编编程语言)。

最后,我想简单地解释一下 IA-32 中的寻址模式,最好用关于内存及其偏移量的图片来表示......

我是通过A guide to assembly programming in Linux这本书学习汇编语言的。

非常感谢。

最佳答案

this power point presentation 找到这张图片.

Addressing modes

这意味着您可以使用 [eax + ecx * 2 + 100] 这样的地址。您不必使用所有这些字段。

另见 Referencing the contents of a memory location. (x86 addressing modes)

比例因子作为 2 位移位计数编码到机器代码中。 ESP 不能作为索引,因为特殊情况下指示 SIB 字节的存在和 SIB 字节没有索引。参见 rbp not allowed as SIB base?了解特殊情况。


在 Linux 等普通操作系统下,在 32/64 位模式下可以忽略分段

段寄存器根据寻址模式中的基址寄存器自动选择,或使用段覆盖前缀(例如ds:cs:)。

但 Linux 使用平面内存模型,因此所有段的段基数始终为 0(fsgs 除外,用于线程本地存储)。段基址加上由基址、索引、比例和位移计算出的“偏移量”,得到最终的线性地址。所以通常“偏移量”部分是整个线性地址。

该线性地址是一个虚拟地址,硬件通过页表/TLB(由内核管理)将其转换为物理地址。

关于linux - IA-32 中的寻址模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25567990/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com