diff --git a/SM2-MFMM-(2).md b/SM2-MFMM-(2).md index a95b3f8..d6e3c71 100644 --- a/SM2-MFMM-(2).md +++ b/SM2-MFMM-(2).md @@ -28,6 +28,31 @@ $t_1=t_1 + t_0 \ast 0xFFFFFFFF00000001$ $t_2=t_2 + t_0 \ast p_2$ $t_3=t_3 + t_0 \ast p_3$ +伪代码: +```asm + MOVQ $0xFFFFFFFF00000001, AX + MULQ t0 + ADDQ AX, t1 + ADCQ $0, DX + MOVQ DX, BX // carry + + MOVQ p2, AX + MULQ t0 + ADDQ BX, t2 + ADCQ $0, DX + ADDQ AX, t2 + ADCQ $0, DX + MOVQ DX, BX // carry + + MOVQ p3, AX + MULQ t0 + ADDQ BX, t3 + ADCQ $0, DX + ADDQ AX, t3 + ADCQ $0, DX + MOVQ DX, t0 +``` + ### 方案二:(移位、加法、减法) $T_2=T_1 \ast P=t_0 \ast P= t_0 \ast (2^{256}-(2^{32} \ast 2^{192} + 0 \ast 2^{128} + (2^{32} - 1) \ast 2^{64} + 1))$ $T_2=t_0 \ast 2^{256} - t_0 \ast 2^{32} \ast 2^{192} - t_0 \ast (2^{32} - 1) \ast 2^{64} - t_0$