Tri*_*ian 9 x86 assembly x86-64 instruction-set machine-code
该Intel® 64 and IA-32 Software Developer's Manual, Volume 2A, Section 3.1.1.1提到的符号ct来表示操作码之后的10字节值.然而,我无法找到任何用它注释的指令.我错过了什么或没有指令采用10字节的立即值?
据我所知,没有这样的指示.
没有指令采用浮点数字,特别是不是x87 10字节long double,因此它绝对不是TBYTE FP操作数.
32位具有jmp ptr16:32和call绝对直接远程跳转,具有6字节的立即目标(cp).但x86-64没有call或的编码jmp ptr16:64.(只有内存间接的10字节seg:从内存加载的偏移量).
@Harold将EA和9A操作码(直接远程jmp/call)在64位模式故障中称为非法指令,即使它们在一个无法访问的页面之前是7个字节,而不是试图读取10个字节的立即故障访问违规)
@Matteo注意到普通的immediates使用ib/ iw/ id/ io.(例如,mov r64, imm64REX.W + B8 + rd io.)英特尔的moffsMOV形式手册仅列出操作码,而不是8字节的立即绝对地址格式.
无论如何cp是一个6字节的seg:ptr32对,用于jmp/call编码. cd是一个4字节seg:ptr16.x86没有绝对的直接近跳,所以我们无法看到是否co会用于此.
似乎很可能ct只是忘记了jmp ptr16:64不存在的人,或者他们想要在指令格式之外描述类似内容的人添加到手册中.IDK如果在英特尔手册的其他部分中用于描述内存中的数据,但是我没有注意到有10个字节的立即数据的指令.
最多是8,用于mov r64, imm64或movabs [mem], al/ax/eax/rax(或负载形式).许多指令也可以有imm32和disp32,但这是两个独立的值.