我正在使用一款Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz处理器,想知道为什么64位数的乘法比32位数慢。我已经用C语言进行了测试,并发现它需要两倍的时间。
我原以为它需要相同的时间,因为CPU使用本机64位寄存器,数字的宽度不应该有关系(只要它们适合64位寄存器)。
请问有人能解释一下吗?
我原以为它需要相同的时间,因为CPU使用本机64位寄存器,数字的宽度不应该有关系(只要它们适合64位寄存器)。
请问有人能解释一下吗?
IMUL %EBX, %ECX
,在x86-64汇编的某种方言中,与64位乘法IMUL %RBX, %RCX
不同。我认为这里可能会出现一个问题,因为64位乘法。
实际上,对于两个32位数字的乘法,结果将最大为64位。但是,如果乘以两个64位数字,则乘积可能为128位,在所有情况下都将大于64位!
在8086微处理器中,如果您使用8位数字和16位数字执行相同的操作,您将遇到CPU寄存器必须从AX寄存器和DX寄存器存储的情况(如果您知道汇编语言缩写)。
因此,我认为这可能会增加计算时间!我认为这就是使您的64位乘法变慢的原因!