我发现
例如:
你可以将
在将有符号数乘以无符号数时,
mul
和imul
都可以用于将有符号数乘以无符号数。例如:
global _start
section .data
byteVariable DB -5
section .text
_start:
mov al, 2
imul BYTE [byteVariable]
你可以将
imul
替换为mul
,结果仍然相同(-10
)。在将有符号数乘以无符号数时,
mul
和imul
是否完全相同,还是它们之间存在区别?
mul
时,ax
是0x01F6
(502
),而当使用imul
时,它是0xFFF6
(-10
)。 - user8315006imul reg,r/m32
或imul reg,r/m32,imm
;它在现代CPU上更有效率(1 uop),因为它不必在任何地方写入高半部分。https://agner.org/optimize/ - Peter Cordes