在 x86 中将单个内存单元设置为零的最快方法是什么?通常我这样做的方式是这样的:
C745D800000000 MOV [ebp-28], 0
正如你所看到的,它有一个非常粗的编码,因为它使用了所有 4 个字节作为常量。使用普通寄存器,我可以使用MVZE
更紧凑的寄存器,但MVZE
不适用于内存。
我在想也许可以清除一个寄存器,然后MOV
将寄存器值存储到内存中。然后,它将是两条指令,但总共只有 5 个字节,而不是上面的一个 7 字节指令。遵循“如果它更短,它通常更快”的规则,这可能是可取的。