X86 我有一段代码,我不明白为什么它在使用malloc创建数组时使用shl指令

X86 我有一段代码,我不明白为什么它在使用malloc创建数组时使用shl指令,x86,malloc,X86,Malloc,我试图理解这段代码,它在x86(MASM汇编)中将内存动态分配给1D数组时使用shell指令(SHL)。我想知道这个人使用shl指令的原因 将某物向左移动一次等于将其乘以2;左移N次等于乘以2**N;但移位通常比实际乘法快 对于您显示的代码;它将n乘以sizeof(int)。因为sizeof(int)恰好是4,这意味着它可以左移两次(shl eax,2),而不是进行(更昂贵的)乘法。带箭头的行的注释甚至解释了它:;eax

我试图理解这段代码,它在x86(MASM汇编)中将内存动态分配给1D数组时使用shell指令(SHL)。我想知道这个人使用shl指令的原因


将某物向左移动一次等于将其乘以2;左移N次等于乘以2**N;但移位通常比实际乘法快


对于您显示的代码;它将
n
乘以
sizeof(int)
。因为
sizeof(int)
恰好是4,这意味着它可以左移两次(
shl eax,2
),而不是进行(更昂贵的)乘法。

带箭头的行的注释甚至解释了它:
;eax