首页 > 解决方案 > 我有一段代码我不明白为什么它在使用 malloc 创建数组时使用 shl 指令

问题描述

我试图理解这段代码在将内存动态分配给 x86(MASM 程序集)中的一维数组时使用 shell 指令(SHL)。我想知道这个人使用 shl 指令的原因。

代码片段

标签: x86malloc

解决方案


向左移动一次与将其乘以 2 相同;向左移动 N 次与将其乘以 2**N 相同;但移位通常比实际乘法快。

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


推荐阅读