x86 中的“常规”寄存器只有 32 位大小,因此您不能使用它们来添加两个 64 位整数(除非您分多个步骤进行添加)。

但是,您能否使用另一种方式(例如使用 SSE) native 添加两个 64 位整数?

最佳答案

在 32 位模式下,有四种方法可以做到这一点:

  • 最推荐的方法是在通用寄存器
  • 上使用 addadc 分两步进行加法
  • 如果你的 CPU 有 FPU,你也可以用 x87 FPU 做 64 位运算。由于 x87 FPU 拥有 64 位尾数,因此只要不超过 64 位范围,对 64 位整数的计算就是精确的。
  • 如果你的 CPU 至少支持 SSE2,你可以在 MMX 寄存器上做 64 位算术
  • 如果您的 CPU 至少支持 SSE2,您还可以对 XMM 寄存器进行 64 位算术

  • 对于单个 64 位操作,其中最快的可能是 add/adc 方法。对于多个操作,SSE2 将是最快的,然后是 MMX(如果您可以忍受转换惩罚并且在 MMX 状态下无法使用 x87 FPU),最后是 x87。

    在 64 位模式(长模式)下,您还可以简单地对 64 位通用寄存器进行 64 位运算。

    如果您需要更多详细信息或示例,请告诉我。

    关于assembly - 您可以在 x86 中 native 添加两个 64 位整数吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55677040/

    10-11 03:34
    查看更多