IMUL-MUL
作者:Vesper Vei
1 分钟阅读
目录
IMUL-MUL(imul / mul)
基本作用
IMUL → 有符号乘法
MUL → 无符号乘法
两者都可能涉及双寄存器结果(EDX:EAX 或 RDX:RAX)。
IMUL 指令格式
共有三种:
- 隐式形式(结果放入 edx:eax)
imul r/m32; EDX:EAX = EAX * r/m32(有符号)- 显式二操作数
imul reg, r/m32reg = reg * r/m32- 三操作数
imul reg, r/m32, immreg = r/m32 * immMUL 指令格式(无符号)
mul r/m32 ; EDX:EAX = EAX * r/m32MUL 没有显式的 reg = reg × x 形式。
行为特性
- 结果高位部分(EDX 或 RDX)用于判断是否溢出
- 若高位不为 0,OF = CF = 1
- 隐式形式必须使用累加寄存器(EAX / RAX)作为参与者
示例
mov eax, 5imul eax, 3 ; eax = 15
mov eax, -10imul eax, -4 ; eax = 40(有符号乘法)隐式形式:
mov eax, 0x10000imul dword ptr [rbp-4] ; rdx:rax = rax * [rbp-4]常见用途
- 数学计算
- 数组索引计算(index × element_size)
- 结构体偏移计算