From 2bf3d3b0b9905069158b7756b5b030013fa468a9 Mon Sep 17 00:00:00 2001 From: Sun Yimin Date: Fri, 1 Mar 2024 09:23:58 +0800 Subject: [PATCH] Updated SM2 WWMM (2) (markdown) --- SM2-WWMM-(2).md | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/SM2-WWMM-(2).md b/SM2-WWMM-(2).md index ddf48e9..8d0f568 100644 --- a/SM2-WWMM-(2).md +++ b/SM2-WWMM-(2).md @@ -101,23 +101,24 @@ $t_0=t_0 - a_1$ 伪代码: ```asm - \ // First reduction step, [p3, p2, p1, p0] = [1, -0x100000000, 0, (1 - 0x100000000), -1] - MOVQ acc0, AX \ - MOVQ acc0, DX \ - SHLQ $32, AX \ // AX = L(acc0 * 2^32), low part - SHRQ $32, DX \ // DX = H(acc0 * 2^32), high part - \// calculate the negative part: [1, -0x100000000, 0, -0x100000000] * acc0 + [0, acc3, acc2, acc1] - SUBQ AX, acc1 \ - SBBQ DX, acc2 \ - SBBQ AX, acc3 \ - MOVQ acc0, AX \ - SBBQ DX, acc0 \ - \ // calculate the positive part: [0, 0, 0, 1] * AX + [acc0, acc3, acc2, acc1], - \ // due to (-1) * acc0 + acc0 == 0, so last lowest lamb 0 is dropped directly, no carry. - ADDQ AX, acc1 \ // acc1' = L (AX+ acc1) - ADCQ $0, acc2 \ // acc2' = acc2 + carry1 - ADCQ $0, acc3 \ // acc3' = acc3 + carry2 - ADCQ $0, acc0 \ // acc0' = acc0 + carry3 + \ // First reduction step, [p3, p2, p1, p0] = [1, -0x100000000, 0, (1 - 0x100000000), -1] + MOVQ acc0, AX \ + MOVQ acc0, DX \ + SHLQ $32, AX \ // AX = L(acc0 * 2^32), low part + SHRQ $32, DX \ // DX = H(acc0 * 2^32), high part + \// calculate the negative part: [1, -0x100000000, 0, -0x100000000] * acc0 + [0, acc3, acc2, acc1] + \ //[acc0, acc3, acc2, acc1] - [0, 0x100000000, 0, 0x100000000] * acc0 + SUBQ AX, acc1 \ + SBBQ DX, acc2 \ + SBBQ AX, acc3 \ + MOVQ acc0, AX \ + SBBQ DX, acc0 \ + \ // calculate the positive part: [0, 0, 0, 1] * AX + [acc0, acc3, acc2, acc1], + \ // due to (-1) * acc0 + acc0 == 0, so last lowest lamb 0 is dropped directly, no carry. + ADDQ AX, acc1 \ // acc1' = L (AX+ acc1) + ADCQ $0, acc2 \ // acc2' = acc2 + carry1 + ADCQ $0, acc3 \ // acc3' = acc3 + carry2 + ADCQ $0, acc0 \ // acc0' = acc0 + carry3 ``` 移位: 2 加法:4