我知道x86指令最多可以包含4个字节的前缀,例如Lock,rep,segment overrides等。
如果使用多个前缀,是否应该出现任何特定顺序?
答案 0 :(得分:5)
订单可在英特尔软件开发人员手册的第2A卷中找到。
简而言之:
F2
和F3
前缀相互抵消。稍后出现的那个优先。66
或F2
,则忽略F3
前缀(作为长指令中的强制性前缀)。这当然不适用于rep movsw
,其中这两个前缀只是前缀,而不是操作码的一部分。66
,F2
或F3
其余的,订单无关紧要。
答案 1 :(得分:1)
引用英特尔®64和IA-32架构软件开发人员手册第2A卷:指令集参考,A-M
指令前缀分为四组,每组包含一组 允许的前缀码。对于每条指令,它只对有用 包括来自四个组中每个组的最多一个前缀代码(组1, 2,3,4)。第1组至第4组可以相对于任何顺序放置 彼此。
答案 2 :(得分:1)
英特尔开发人员手册的体系结构量详细说明了长度的布局,但是,根据我上次读到的内容,大多数的顺序无关紧要,除了 {{1 } / REX
前缀必须占用最接近实际指令字节开头的槽(也就是说它占用了最右边的槽)