您可以在x86中本地添加两个64位整数吗?

时间:2019-04-14 15:35:56

标签: assembly x86 sse

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

但是您可以使用另一种方式(例如,使用SSE)以本机方式添加两个64位整数吗?

1 个答案:

答案 0 :(得分:9)

在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位算术运算。

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