- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 x86 汇编器中,假设您有
为什么需要索引和基指针寻址模式?据我所知,每个都可以用循环替换。
此外,间接模式似乎也不太有用,因为您可以简单地使用直接模式来引用内存地址。首先访问包含指向内存地址的指针的寄存器的目的是什么?
简而言之,哪些寻址模式是真正必要的?
最佳答案
虽然理论上“寻址模式”可以用来指代操作数类型,但由于它不涉及地址,所以有点令人困惑。 Intel 手册使用“寻址模式”来指代内存寻址,我将使用这个定义。
在汇编中,操作数可以是:
在x86架构中,“寻址模式”仅针对最后一类操作数:内存操作数(地址),指的是可用于计算地址的方法。寻址模式可以概括为一个可配置的寻址模式:
address = REG_base + REG_index*n + offset
REG_base
、REG_index
、n
和 offset
都是可配置的,并且都可以省略(但是您显然,至少需要一个)。
address = offset
称为立即寻址、直接寻址或绝对寻址。address = REG_base
称为寄存器间接寻址。address = REG_base + REG_index
称为基址加索引寻址。
同样,您可以添加偏移量 (offset
) 和比例 (n
)。
严格来说,您只需要一种模式即可完成所有操作:寄存器间接寻址(address = REG
)。这样,如果您需要访问内存,您可以在寄存器中计算出您想要的任何地址,并使用它来进行访问。它还可以通过使用内存来替换直接寄存器操作数,以及通过算术构造值来替换立即操作数。然而,对于实际的指令集,您仍然需要立即数操作数来有效地加载地址,并且如果您不需要仅指针寄存器,则需要寄存器操作数。
除了寄存器间接寻址之外的所有其他寻址模式都是为了方便起见,它们确实非常方便:
int
)数组,无需额外的寄存器或计算。这些寻址模式不需要 CPU 进行太多计算:只需加法和移位。考虑到 x86 每个周期都可以执行乘法,这些操作虽然微不足道,但仍然非常方便。
关于assembly - 计算所需的最小寻址模式数量是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35221379/
我正在尝试提供即时转码的视频。不幸的是,这意味着寻求不起作用。我假设这是因为浏览器不知道视频有多长,因此无法正确显示搜索栏。 有谁知道是否可以对视频的时长进行硬编码? 我想到的另一个选择可能是创建我自
我是一名优秀的程序员,十分优秀!