标签: x86 malloc
我试图理解这段代码,该代码在将内存动态分配给x86(MASM组件)中的一维数组时使用shell指令(SHL)。我想知道该人使用shl指令的原因。
code fragment
答案 0 :(得分:1)
左移一次等于将其乘以2;将某物左移N次与将其乘以2 ** N相同;但是移位通常比实际乘法快。
对于您显示的代码;将n乘以sizeof(int)。由于sizeof(int)恰好是4,这意味着它可以向左移动两次(shl eax,2)而不是进行(更昂贵的)乘法。
n
sizeof(int)
shl eax,2