You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

x86-64平台下无符号128位除以64位的高效实现方法

x86-64下128位无符号数除以64位除数的高效实现

你之前对DIV指令的功能理解有误——x86-64架构中,DIV r/m64指令本身就是专门用来处理128位无符号被除数除以64位除数的操作,完全不需要手动实现长除法。

指令核心逻辑

当执行DIV rdi时:

  • 被除数是rdx:rax组成的128位无符号数(低64位在rax,高64位在rdx)
  • 除数是rdi中的64位无符号数
  • 执行完成后,商被存入rax,余数存入rdx

关键注意点

  • 执行DIV前要保证rdx的值是被除数的高64位,不要误修改
  • 如果除数为0,或者商的结果超出64位范围(即rdx >= rdi),会触发除法错误异常(#DE)

示例汇编代码片段

; 前提:rdx:rax已装载128位被除数,rdi已装载64位除数
div rdi       ; 执行128位÷64位无符号除法
; 执行后:rax = (rdx:rax) / rdi,rdx = (rdx:rax) % rdi

内容的提问来源于stack exchange,提问作者HeapUnderStop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 12:22:34