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`来选择最终结果。