x86 - 我有一段代码我不明白为什么它在使用 malloc 创建数组时使用 shl 指令
解决方案
向左移动一次与将其乘以 2 相同;向左移动 N 次与将其乘以 2**N 相同;但移位通常比实际乘法快。
对于您显示的代码;它n
乘以sizeof(int)
。因为sizeof(int)
恰好是 4,这意味着它可以向左移动两次 ( shl eax,2
) 而不是进行(更昂贵的)乘法。
推荐阅读
- vba - vba 复制 listobject 表到 listobject 表
- apache-kafka - 修复kafka中的复制分区
- javascript - Xamarin WebView:无法使用 Facebook 和 Google 帐户登录
- c# - 在excel中导出内容的最佳方法是什么
- react-native - Sinch 服务在 react-native
- microservices - 如何在 Consul 中同一服务的实例之间交换数据?
- ios - 完成数据获取后如何在tableView中使用UIActivityIndicatorView
- mysql - 将 Sql Server 查询转换为 MySql Server 查询
- android - Android 构建失败:无法为项目获取未知属性“assembleDebug”
- cordova - 如何使用 cordova-plugin-camera (ALLMEDIA) 启用视频和图片