在32位体系结构中对64位操作数的操作



大多数编译器如何在32位环境中实现64位操作数(例如long int)的操作?换句话说,有没有一种方法可以在一个步骤中实现这些操作,或者我们需要访问多个内存位置来实现这些操作?

它们使用两个寄存器来保存64位值。一个用于下32位,一个用于上32位。

对于x86, 64位的加减法是使用加进位和减借指令来完成的:

add   %eax, (lower 32-bits of operand)
adc   %edx, (upper 32-bits of operand)

64位乘法要复杂得多,但也可以使用32位乘法和32位加进指令的组合来完成。(类似于2位数的长乘法)

对于加载和存储,是的,需要从两个寄存器中加载/存储两个32位值。

同样,128位整数也可以在64位硬件上实现。

相关内容

最新更新