- 注册时间
- 2008-2-6
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 51573
- 在线时间
- 小时
|
楼主 |
发表于 2023-5-22 16:02:01
|
显示全部楼层
现在64位下简单多了
- ;以win64下为例
- section .text
- Uint128x128To256_64:
- ;void UInt128x128To256( UINT64 result[4], const UINT64 left[2], const UINT64 right[2] )
- ;rcx = result, rdx = left, r8 = right
- ;首先做下调整
- mov r10, rcx
- mov r9, rdx
- mov r11, 0
- ;r10 = result, r9 = left, r8 = right
- mov rax, [r8]
- mul [r9]
- mov [r10], rax
- mov [r10+8], rdx
- mov rax, [r8]
- mul [r9+8]
- add [r10+8], rax
- adc rdx, 0
- mov [r10+16], rdx
-
- mov rax, [r8+8]
- mul [r9]
- add [r10+8], rax
- adc [r10+16], rdx
- adc r11, 0
- mov [r10+24], r11
-
- mov rax, [r8+8]
- mul [r9+8]
- add [r10+16], rax
- adc [r10+24], rdx
-
- ret
复制代码 |
|