- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在实模式和 32 位保护模式下,16 位寻址用于通过 ModR/M 字节引用内存。此寻址仅在使用传统前缀的 i386 指令中受支持,而在 x86-64 指令中完全不受支持。
但是,ModR/M 字节也被 8 位特定操作码使用,这让我怀疑 原始 16 位 x86 指令集中是否存在 8 位寻址。尽管 8 位地址非常有限,但完全有可能以与 16 位指令相同的样式对这样的指令进行编码,但操作码不同。
例如,而不是
add (bx, si), ax
你应该有
add (bl, dh), al
很难找到任何 pre-i386 文档,所以我一无所知。曾经支持过吗?
最佳答案
仅通过 XLAT ,它有效地执行 mov al, [bx + al]
(not 可编码为 mov
)。
现代 16 位实模式使用与 8086 相同的机器代码格式,这就是向后兼容的含义。 (只有非常小的差异,比如现在指令长度限制为 15 个字节,而 8086 会很高兴地获取无限数量的前缀,即使这意味着在一个 64k 段内环绕 IP,其中充满 rep
前缀。)
NASM x86 16-bit addressing modes列出所有 ModRM 模式:它们仅包括 16 位寄存器。
add [bx + si], al
是可编码的(如 00 00
),但 add [bl + dh], al
是不。
如果您想查看历史文档,可以使用 8086 手册的 PDF 格式。此外,8086 的 ISA 的主要架构师 Stephen Morse 写了一本书“8086/8088 入门”,现在可以在他的网站上免费获得:https://stevemorse.org/8086/ .
8086 的早期祖先,例如只有 8 位寄存器的 8080,are not x86 CPUs .
相关:
ModRM [+ SIB]
地址编码的 32/64 位模式版本也无法做到这一点。关于assembly - 最初的 16 位 x86 中是否有 8 位内存寻址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74111814/
我正在尝试提供即时转码的视频。不幸的是,这意味着寻求不起作用。我假设这是因为浏览器不知道视频有多长,因此无法正确显示搜索栏。 有谁知道是否可以对视频的时长进行硬编码? 我想到的另一个选择可能是创建我自
我是一名优秀的程序员,十分优秀!