在32位CPU上实现Int64

alp*_*use 4 .net clr 64-bit 32-bit 32bit-64bit

我有好奇心的问题.

如何Int64实现32位处理器?我可以看到三种选择

  1. 32位处理器具有允许64位算术的某种扩展
  2. Int64 它是完全在CLR中实现的,它通过使用32位操作实现64位算术
  3. 一些 32位处理器可以进行64位运算,CLR使用这种逻辑.在其他处理器上,CLR回退到它自己的64位逻辑实现.

第一种情况看起来似乎不合理,因为它意味着64位处理器现在应该能够进行128位运算.第二个提出了一个如何有效地完成它的问题.第三种看起来想要统一两种方法的最差特征.

Rem*_*anu 6

  • 像旧Pentiums(作为32位处理器的一个例子)的Intel x86处理器已经能够长时间进行64位算术甚至128位算术(例如XMMM0-XMM7).
  • 仅使用32位注册表的64位算术已有详细记录
  • CLR的平台特定实现可以自由地实现上述之一,或者实现其他东西以满足要求.