簡體   English   中英

你能在x86中原生添加兩個64位整數嗎?

[英]Can you add two 64-bit integers natively in x86?

x86中的“常規”寄存器的大小只有32位,因此您不能使用它們來添加兩個64位整數(除非您在多個步驟中添加)。

但是,您可以使用其他方式本地添加兩個64位整數,例如使用SSE嗎?

在32位模式下,有四種方法可以做到這一點:

  • 最推薦的方法是在通用寄存器上add一個adc然后再使用adc ,分兩步add
  • 如果您的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位運算。

如果您需要更多詳細信息或示例,請與我們聯系。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM