首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加法运算与乘法运算

加法运算与乘法运算
EN

Stack Overflow用户
提问于 2012-09-25 00:44:24
回答 2查看 213关注 0票数 1

我知道,加法运算比乘法运算更简单。但是123456 * 3123456 + 123456 + 123456的执行时间会有什么区别吗

乘法究竟是如何工作的?

乘法算法在不同的编程语言中是否有所不同?

乘法在低级(即汇编器代码)上看起来怎么样?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-25 01:09:29

在x86汇编语言中,加法和乘法操作如下所示:

添加operand1、operand2,其中operand1可以是寄存器,操作数2可以是寄存器、常量或存储器地址,根据处理器型号和operand2类型,需要1到7个时钟

MUL操作数;对于无符号乘法,将累加器寄存器(AL、AX、EAX)的内容与操作数相乘,操作数可以是寄存器或存储器地址。同样,根据操作数和处理器型号的类型,它需要12-38个时钟,还有一种MUL版本,它执行带符号乘法。

这是核心汇编语言,没有SSE等现代SIMD扩展。如上所述,真正的速度取决于编译器的优化。

聪明的编译器很可能会将123456 + 123456 + 123456替换为3*123456

票数 2
EN

Stack Overflow用户

发布于 2012-09-25 00:52:14

过早优化是万恶之源:)

你给编译器的不是你在优化步骤后得到的结果,所以虽然理论上加法速度更快,但在现实世界中,你永远不能确定结果会是什么(更不用说当你考虑到SSE或编译器可能使用的其他处理器指令时)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12569367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档