mirror of
https://github.com/emmansun/gmsm.git
synced 2025-10-14 07:10:45 +08:00
Updated sm2_z256_loong64.S 代码分析 (markdown)
parent
0dd02a3839
commit
cd7ebde7de
@ -71,8 +71,9 @@ $T_2=T_1 \ast P=t_0 \ast P= t_0 \ast (2^{256}-(2^{32} \ast 2^{192} + 0 \ast 2^{1
|
|||||||
$T_2=(t_0-t_0>>32) \ast 2^{256}+(0 - t_0<<32) \ast 2^{192} + (0 - t_0>>32) \ast 2^{128} + (t_0 - t_0<<32) \ast 2^{64} - t_0$
|
$T_2=(t_0-t_0>>32) \ast 2^{256}+(0 - t_0<<32) \ast 2^{192} + (0 - t_0>>32) \ast 2^{128} + (t_0 - t_0<<32) \ast 2^{64} - t_0$
|
||||||
$T_3=T + T_2=(t_4+t_0-t_0>>32) \ast 2^{256}+(t_3 - t_0<<32) \ast 2^{192} + (t_2 - t_0>>32) \ast 2^{128} + (t_1 + t_0 - t_0<<32) \ast 2^{64} $
|
$T_3=T + T_2=(t_4+t_0-t_0>>32) \ast 2^{256}+(t_3 - t_0<<32) \ast 2^{192} + (t_2 - t_0>>32) \ast 2^{128} + (t_1 + t_0 - t_0<<32) \ast 2^{64} $
|
||||||
注释:这里 $t_0<<32$ 是 $t_0 \ast 2^{32}$ 的低64位, $t_0>>32$ 是 $t_0 \ast 2^{32}$ 的高64位。
|
注释:这里 $t_0<<32$ 是 $t_0 \ast 2^{32}$ 的低64位, $t_0>>32$ 是 $t_0 \ast 2^{32}$ 的高64位。
|
||||||
它这里先计算T的系数(WORD),再计算 $T_2$ 的系数。
|
它这里先计算T的系数(WORD),再计算 $T_2$ 的系数。
|
||||||
|
1. 几个**no carry**判断的准确性:
|
||||||
|
1. https://github.com/DengJianbo-loongson/GmSSL/blob/2497946ac6458ae1fb6931b66804dbc62cfffe44/src/sm2_z256_loong64.S#L268 `add.d $t5, $a1, $t5`,这里`$a1`是可能的进位,这一点是不一定成立的。但是,如果把它和261行`add.d $t5, $t5, $s2`交换以下顺序,则成立,因为两个64位字的乘法产生的高64位字,不可能是 $2^64-1$ 。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user