找回密码
 欢迎注册
楼主: 无心人

[擂台] x86上128位二进制乘法最快速算法征解

[复制链接]
 楼主| 发表于 2023-5-22 16:02:01 | 显示全部楼层
现在64位下简单多了

  1. ;以win64下为例
  2. section .text
  3. Uint128x128To256_64:
  4. ;void UInt128x128To256( UINT64 result[4], const UINT64 left[2], const UINT64 right[2] )
  5. ;rcx = result, rdx = left, r8 = right
  6. ;首先做下调整
  7.     mov r10, rcx
  8.     mov r9, rdx
  9.     mov r11, 0
  10. ;r10 = result, r9 = left, r8 = right
  11.     mov rax, [r8]
  12.     mul [r9]
  13.     mov [r10], rax
  14.     mov [r10+8], rdx

  15.     mov rax, [r8]
  16.     mul [r9+8]
  17.     add [r10+8], rax
  18.     adc rdx, 0
  19.     mov [r10+16], rdx
  20.    
  21.     mov rax, [r8+8]
  22.     mul [r9]
  23.     add [r10+8], rax
  24.     adc [r10+16], rdx
  25.     adc r11, 0
  26.     mov [r10+24], r11
  27.    
  28.     mov rax, [r8+8]
  29.     mul [r9+8]
  30.     add [r10+16], rax
  31.     adc [r10+24], rdx
  32.    
  33.     ret
复制代码

点评

另外,就是这个仅仅clang 16支持  发表于 2023-5-25 11:40
我看到那个了,似乎是把a, b按照64位一个压进4个寄存器里  发表于 2023-5-25 11:35
clang自帶乘法https://gcc.godbolt.org/z/KejxbWss4  发表于 2023-5-23 08:53
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-7-11 09:37:38 | 显示全部楼层
无心人 发表于 2023-5-22 16:02
现在64位下简单多了

我看不懂!为什么会有这么多回复
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-11-21 18:03 , Processed in 0.027710 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表