mirror of
https://github.com/emmansun/gmsm.git
synced 2025-05-11 03:26:17 +08:00
Updated SM2 WWMM (2) (markdown)
parent
265eae11e8
commit
2bf3d3b0b9
@ -101,23 +101,24 @@ $t_0=t_0 - a_1$
|
|||||||
|
|
||||||
伪代码:
|
伪代码:
|
||||||
```asm
|
```asm
|
||||||
\ // First reduction step, [p3, p2, p1, p0] = [1, -0x100000000, 0, (1 - 0x100000000), -1]
|
\ // First reduction step, [p3, p2, p1, p0] = [1, -0x100000000, 0, (1 - 0x100000000), -1]
|
||||||
MOVQ acc0, AX \
|
MOVQ acc0, AX \
|
||||||
MOVQ acc0, DX \
|
MOVQ acc0, DX \
|
||||||
SHLQ $32, AX \ // AX = L(acc0 * 2^32), low part
|
SHLQ $32, AX \ // AX = L(acc0 * 2^32), low part
|
||||||
SHRQ $32, DX \ // DX = H(acc0 * 2^32), high part
|
SHRQ $32, DX \ // DX = H(acc0 * 2^32), high part
|
||||||
\// calculate the negative part: [1, -0x100000000, 0, -0x100000000] * acc0 + [0, acc3, acc2, acc1]
|
\// calculate the negative part: [1, -0x100000000, 0, -0x100000000] * acc0 + [0, acc3, acc2, acc1]
|
||||||
SUBQ AX, acc1 \
|
\ //[acc0, acc3, acc2, acc1] - [0, 0x100000000, 0, 0x100000000] * acc0
|
||||||
SBBQ DX, acc2 \
|
SUBQ AX, acc1 \
|
||||||
SBBQ AX, acc3 \
|
SBBQ DX, acc2 \
|
||||||
MOVQ acc0, AX \
|
SBBQ AX, acc3 \
|
||||||
SBBQ DX, acc0 \
|
MOVQ acc0, AX \
|
||||||
\ // calculate the positive part: [0, 0, 0, 1] * AX + [acc0, acc3, acc2, acc1],
|
SBBQ DX, acc0 \
|
||||||
\ // due to (-1) * acc0 + acc0 == 0, so last lowest lamb 0 is dropped directly, no carry.
|
\ // calculate the positive part: [0, 0, 0, 1] * AX + [acc0, acc3, acc2, acc1],
|
||||||
ADDQ AX, acc1 \ // acc1' = L (AX+ acc1)
|
\ // due to (-1) * acc0 + acc0 == 0, so last lowest lamb 0 is dropped directly, no carry.
|
||||||
ADCQ $0, acc2 \ // acc2' = acc2 + carry1
|
ADDQ AX, acc1 \ // acc1' = L (AX+ acc1)
|
||||||
ADCQ $0, acc3 \ // acc3' = acc3 + carry2
|
ADCQ $0, acc2 \ // acc2' = acc2 + carry1
|
||||||
ADCQ $0, acc0 \ // acc0' = acc0 + carry3
|
ADCQ $0, acc3 \ // acc3' = acc3 + carry2
|
||||||
|
ADCQ $0, acc0 \ // acc0' = acc0 + carry3
|
||||||
```
|
```
|
||||||
移位: 2
|
移位: 2
|
||||||
加法:4
|
加法:4
|
||||||
|
Loading…
x
Reference in New Issue
Block a user