mirror of
https://github.com/emmansun/gmsm.git
synced 2025-09-17 04:13:49 +08:00
Updated MFMM (markdown)
parent
e06885fae8
commit
c3325c1ae7
6
MFMM.md
6
MFMM.md
@ -116,13 +116,17 @@ acc0, acc1, acc2, acc3, acc4, acc5是64位寄存器
|
||||
MUL const3, acc0, t0 // t0 = L(acc0*p3)
|
||||
ADCS t0, acc3, acc3 // (carry3,acc3) = acc3 + L(acc0*p3)
|
||||
|
||||
UMULH const3, acc0, hlp1 // hlp1 = H(acc0*p3)
|
||||
UMULH const3, acc0, hlp1 // hlp1 = H(acc0*p3), 事实上不能用hlp1, 这个寄存器被p256PointAddAsm方法全局使用
|
||||
ADC $0, acc4 // acc4 = carry3 + acc4
|
||||
|
||||
ADDS acc0, acc1, acc1 // (carry4, acc1) = acc0 + acc1 + L(acc0*p1)
|
||||
ADCS y0, acc2, acc2 // (carry5, acc2) = carry4 + acc2 + L(acc0*p2) + H(acc0*p1)
|
||||
ADCS hlp0, acc3, acc3 // (carry6, acc3) = carry5 + acc3 + L(acc0*p3) + H(acc0*p2)
|
||||
ADC $0, hlp1, acc0 // acc0 = carry6 + H(acc0*p3)
|
||||
|
||||
手上没有arm64环境,只能依赖Travis CI检验代码,但是很慢,效率很低。
|
||||
|
||||
|
||||
======
|
||||
用加减替代乘法,但存在潜在风险,进位/借位处理太复杂,所以该实现已经被回滚
|
||||
p*acc0 = acc0*2^256 -(acc0*2^32)*2^192 + (acc0 - acc0*2^32)*2^64 - acc0
|
||||
|
Loading…
x
Reference in New Issue
Block a user