当您使用内存覆盖前缀但所有操作数都是寄存器时会发生什么?
所以,假设您编写代码mov eax, ebx
或add eax, ebx
,默认值为32位,但使用67h覆盖。
处理器如何处理这种情况?
答案 0 :(得分:5)
英特尔软件开发人员手册*,第2卷,第2.1节详细介绍了每个指令前缀的行为。它表示使用地址大小前缀(67h)和没有内存操作数的指令是保留的,可能会导致不可预测的行为。
操作数大小前缀(66h)可用于在16位和32位操作数大小之间切换,也可用作某些SSE2 / SSE3 / SSSE3 / SSE4指令的强制前缀。其他用途是保留的,可能会导致不可预测的行为。
段覆盖前缀保留在任何分支指令中。