我正在尝试理解在x86(MASM程序集)中动态分配内存到1D数组时使用shell指令(SHL)的这段代码。我想知道这个人使用shl指令背后的原因。
code fragment
将一次性移动一次与将其乘以2相同;左移N次与将其乘以2 ** N相同;但是移位通常比实际乘法更快。
对于您展示的代码;它是n乘以sizeof(int)。因为sizeof(int)恰好是4,这意味着它可以向左移动两次(shl eax,2)而不是做(更昂贵的)乘法。
n
sizeof(int)
shl eax,2