- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在IA-32中搜索寻址模式,但没有看到任何网站或文章对寻址模式进行了简单的解释。我需要一篇文章或其他东西,通过内存变化过程中的一些图片简单地解释这件事,并通过图片指定地址模式。
我知道在 IA-32 中,寻址的一般形式遵循以下形式:
分段 + 基础 +(索引 * 比例)+ 位移
我想知道位移、比例、索引和基数的确切含义。因为我也不懂英语,所以我不得不搜索它们,但我没有找到这种情况下单词的技术含义(我的意思是汇编编程语言)。
最后,我想简单地解释一下 IA-32 中的寻址模式,最好用关于内存及其偏移量的图片来表示......
我是通过A guide to assembly programming in Linux这本书学习汇编语言的。
非常感谢。
最佳答案
从 this power point presentation 找到这张图片.
这意味着您可以使用 [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(fs
或 gs
除外,用于线程本地存储)。段基址加上由基址、索引、比例和位移计算出的“偏移量”,得到最终的线性地址。所以通常“偏移量”部分是整个线性地址。
该线性地址是一个虚拟地址,硬件通过页表/TLB(由内核管理)将其转换为物理地址。
关于linux - IA-32 中的寻址模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25567990/
我正在尝试提供即时转码的视频。不幸的是,这意味着寻求不起作用。我假设这是因为浏览器不知道视频有多长,因此无法正确显示搜索栏。 有谁知道是否可以对视频的时长进行硬编码? 我想到的另一个选择可能是创建我自
我是一名优秀的程序员,十分优秀!