组装为什么lea快?

2023-12-15

我和我的教授交谈过,他说:

leaq (%rax,%rax,8)

比以下速度更快:

imulq $9, %rax

我问他为什么(在这两种情况下,我们都用几乎相同的数字进行乘法),他说我们不会讨论这个。

有人可以帮助我简单地理解为什么 leaq 总体上很快吗?

评论中提出的一个问题是:

imulq $9, %rax

比执行 2 个命令更快,一个命令左移,另一个命令添加 %rax(我们之前可以将其保存在寄存器中)

and why?


The lea(加载有效地址)是执行指针算术常用操作的一种方法。指令如何引用其操作数称为其寻址方式 and lea支持scaled or 基址加索引加偏移量寻址模式(等等)。

address = base address + index * scaling + offset

其中缩放值可以是几个 2 的幂 (1, 2, 4, 8) 之一。这些值对于字节、字符、整数、指针等数组很有用。它不能对任意值进行编码或执行乘法。在硬件中,这几个选项可以通过几个多路复用器来实现,延迟只有一个周期的一小部分。

另一方面,乘法指令通过可以将两个任意全角(64 位)操作数相乘的乘法电路。这是一个复杂度明显更高的操作。即使并行使用多个全角加法器,其延迟也约为全角加法器的六倍 (log n)(尽管设计可能会采用优化,使其能够更快地乘以更简单的值)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

组装为什么lea快? 的相关文章

随机推荐

  • 在 64 位 Windows 10 上安装 OpenSSL for MSVC2017

    pro LIBS LC Qt Tools OpenSSL Win x86 lib llibssl LIBS LC Qt Tools OpenSSL Win x86 lib llibcrypto INCLUDEPATH C Qt Tools
  • 在 Windows 上使用 php 和 pear 发送邮件

    我正在尝试使用 php 脚本发送电子邮件 但收到错误这是我的代码 我正在使用 xampp netbeans 和 windows 我在 php ini 文件中包含了 pear 但仍然有错误任何想法 require once Mail php
  • rapply 到 R 中的嵌套列表

    我无法对嵌套列表进行说唱 以下是列表中一个元素的示例结构 F01 List of 7 0 data frame 16 obs of 3 variables lengths Factor w 8 levels 1 2 4 5 1 2 3 4
  • 生成_id即可。 MongoDB 中的 ObjectId 自动生成

    我正在开发一个创建永久链接的应用程序 我不知道如何将文档保存在 MondoDB 中 两种策略 ObjectId 自动生成 MongoDB 自动生成 id 我需要创建一个索引permalink字段 因为我通过永久链接获取信息 我还可以使用以下
  • 如何知道一个标签是否包含一个值或另一个标签?

    我在 java 中使用 DOM 表示 如何区分 xml 标签内部是否有值或是否有另一个嵌入标签 例如 我可以有
  • (char *) x 或 (void *) z 是什么意思?

    I know char x意味着指向 char 的指针 但我对什么感到困惑 char x means 这是一个演员阵容 您正在指示编译器处理x就好像它是一个char 无论其真实类型如何 仅当您真正知道自己在做什么时才应使用强制转换 对于某些
  • CSS3 多重变换

    我有一个 css3 动画 我使用下面的代码在 X 轴上旋转立方体 webkit keyframes spin2 from webkit transform rotateX 135deg to webkit transform rotateX
  • 安装因错误而失败 (Eclipse)

    当我尝试安装安装完成时出现错误 安装失败并出现错误 显示日志 即使我以管理员身份运行它也会发生这种情况 我使用的是 Windows 7 Professional 64 位 当我单击显示日志时 这就是我的情况看 2017 04 03 20 3
  • Apache-Ignite 集成作为 Hibernate 二级缓存未启动?

    我正在尝试将 Apache Ignite 设置为我的项目中的第二级 Hibernate 缓存提供程序 但我遇到了一个奇怪的异常 配置如下 POM xml Added
  • ggplot 中其他点的图例

    举这个问题的例子 Link 我想问是否可以在图例中添加额外的蓝点 dat lt data frame cond rep c A B each 10 xvar 1 20 rnorm 20 sd 3 yvar 1 20 rnorm 20 sd
  • 如何将变量从 php 发送到 Android 应用程序?

    大家好 我当前的 Android 应用程序中有一个活动 其中有一个网络视图 我想知道如何从该网站上的 php 获取变量并将其存储到我的 android 应用程序上的变量中 是的 我控制该网站 并且具有完整的编辑功能 我会解释一般需要做的事情
  • 在 OSX 上隐藏 Tkinter 应用程序的控制台

    当我启动基于 GUI Tkinter 的应用程序时 我试图隐藏终端 但是当我双击 OSX 上的 app py 文件时 会出现终端窗口 我尝试将扩展名更改为 pyw 并尝试使用 usr bin pythonw 启动它 但无论如何 终端窗口仍然
  • 无法快速移动键盘视图iOS9

    我需要实现一个拒绝键盘 向下滑动以拒绝 就像 iOS 上的股票消息应用程序中的键盘一样 我有这段代码来获取键盘视图 func keyboardWillShowWithNotification notification NSNotificat
  • 为什么 JQuery ajax 调用后页面会重新加载?

    我的目录如下 根目录 Create php根 资源 js ajaxLibrary js 在我的 create php 文件中 我有一个如下所示的表单
  • 使用位图的列表视图

    我一直在尝试创建列表视图的位图 其中整个列表视图在屏幕上不可见 我在用 Bitmap mBitmap fullView getDrawingCache 创建位图 它适用于屏幕上可见的列表视图部分 但不适用于不可见的部分 我想知道是否可以创建
  • 我可以使用 localhost 在 SDK 中测试 XMLHttpRequest() 吗?

    以下代码似乎不起作用 因为当我尝试在 Google App Engine Python 中获取 选择器 时 它是未定义的 chooser self request get chooser self response out write ch
  • 即使应用程序未运行,也处理 onMessageReceived() 和 onTokenRefresh()

    我有一个包含 2 项服务的应用程序 MessagingService extends FirebaseMessagingService and InstanceIDService extends FirebaseInstanceIdServ
  • 单元格上的 VBA 通配符搜索

    我正在尝试在单元格值中使用通配符搜索来查找某些内容 如果sheet FC Range I2 I LastRowC 中的值 与Sheets Instr Range A130 A190 匹配 表示如果少数字符与上述其他范围匹配 则表 Instr
  • NHibernate 配置连接到 Visual FoxPro 8.0?

    好奇是否有人曾经将 NHibernate 连接到 Visual Foxpro 8 0 我希望连接到遗留数据存储 并且更愿意使用 NHibernate 而不是必须手动编码所有 ADO Net 如果有人有 FoxPro 8 连接的配置 XML
  • 组装为什么lea快?

    我和我的教授交谈过 他说 leaq rax rax 8 比以下速度更快 imulq 9 rax 我问他为什么 在这两种情况下 我们都用几乎相同的数字进行乘法 他说我们不会讨论这个 有人可以帮助我简单地理解为什么 leaq 总体上很快吗 评论