From dc587b4a19dedbd589809afa2258e628ad822054 Mon Sep 17 00:00:00 2001 From: Sun Yimin Date: Wed, 8 Oct 2025 17:38:26 +0800 Subject: [PATCH] =?UTF-8?q?Updated=20sm2=5Fz256=5Floong64.S=20=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E5=88=86=E6=9E=90=20(markdown)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sm2_z256_loong64.S-代码分析.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sm2_z256_loong64.S-代码分析.md b/sm2_z256_loong64.S-代码分析.md index 8274719..32a2960 100644 --- a/sm2_z256_loong64.S-代码分析.md +++ b/sm2_z256_loong64.S-代码分析.md @@ -6,7 +6,7 @@ 实现`(t0, t1, t2, t3) = (t0, t1, t2, t3) + (a4, a5, a6, a7)`,每个代表64位整数,从低到高排列,也就是说`t0`和`a4`是最低64位数,也就是多字(Multi-Word)加法。 **总体实现思路**: -1. 在RISC(如龙芯/LoongArch、MIPS)架构中,没有x86那样的进位标识寄存器,所以进位都要用`sltu` (无符号小于)等指令手动计算。 +1. 在RISC(如龙芯/LoongArch、MIPS)架构中,没有x86那样的进位标识寄存器,所以进位都要用`sltu` (无符号小于)等指令手动计算。容易出错! 1. 使用加`1`来实现`mod P`,这里的`1`为 $2^{256} - P$ 。 1. 使用`or`合并进位(carry)。 1. 使用`masknez`和`maskeqz`来选择最终结果。