【发布时间】:2018-07-24 13:16:24
【问题描述】:
Intel® 64 and IA-32 Software Developer's Manual, Volume 2A, Section 3.1.1.1 提到符号 ct 表示操作码后面的 10 字节值。但是,我找不到任何带有注释的指令。我是否遗漏了什么或者没有指令采用 10 字节的立即值?
【问题讨论】:
-
我不知道有一个。没有 x86-64
jmp ptr16:64encoding,仅适用于 16 位和 32 位模式,如jmp ptr16:32。 x86-64 只有间接远 jmp 与 seg:offset from memory。 -
EA 和 9A 在 64 位模式下甚至不会“因 10 字节 imm 而失败”(也就是说,它们可能在无法访问的页面前 7 个字节,并且仍然因非法指令而不是访问冲突而失败)跨度>
-
t 是 80 位浮点数的数据类型。也许这个符号只是为了完整性而存在?
-
@fuz:我也在考虑 TBYTE,但这里我们并不是真正谈论 CPU 作为数据运行的常用数据类型,而是指令编码中包含的原始字节序列 -例如,甚至有一个 6 字节的值
cp;立即数使用不同的符号(ib、iw、id、io)。顺便说一句,即使co(8 字节序列)值似乎也未使用。不过,我同意这可能只是为了完整性。 -
@fuz: felixcloutier.com/x86/MOV.html 使用
io,而不是co,用于mov r64, imm64。
标签: assembly x86 x86-64 machine-code instruction-set