movzbw 和 movzbl 的操作码都是 OF B6
。我不明白如何通过观察 ModR/M 字节来区分它们。从 Intel 80386 Programmer's Reference Manual (1986) :
处理器如何区分和movzbw和movzbl?
最佳答案
看起来它使用前缀字节:
66 0f b6 c0 movzx ax,al
0f b6 c0 movzx eax,al
0f b7 c0 movzx eax,ax
编辑:注意,在 64 位模式下,上面是相同的,但还有另一个前缀:
48 0f b6 c0 movzx rax,al
48 0f b7 c0 movzx rax,ax
请注意,没有
movzx rax, eax
指令。(我在这方面完全是新手,所以我无法确切解释原因,我只是将代码扔给编译器,看看它是否被接受)。
关于assembly - 80386 - cpu 如何在 movzbw 和 movzbl 之间进行选择,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33061162/