关于蒙哥马利简约实现 #3
-
想问一下这里面的实现细节, Line 568 in b66f1b4 2.这个 have a factor of 0xffffc00 = 2^29 - 2^11的意思是什么? Line 613 in b66f1b4 3./ Word: 2 3 4 5 6 7 8 9 10 |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments
-
我从第三个问题开始回答: 三,首先这个除R的约简是通过不断加上tmp2数组最右(低)字(word)乘P来达成的,一次循环乘两次,虽然都是乘P,但是top half乘的是29 28 29 28 ... 这样位宽表示的P 二, 就是x 要乘以 0x1ffff800,而0x1ffff800表示成2^29 - 2^11,这是bottom half中乘以P的第四个word。 |
Beta Was this translation helpful? Give feedback.
-
感谢回复,基本上原理是懂得,但是一些实现的细节不是很清楚想问一下,方便留下一个联系方式(邮箱或者qq)吗? |
Beta Was this translation helpful? Give feedback.
-
我已在本项目中开放discussions功能。 |
Beta Was this translation helpful? Give feedback.
我从第三个问题开始回答:
三,首先这个除R的约简是通过不断加上tmp2数组最右(低)字(word)乘P来达成的,一次循环乘两次,虽然都是乘P,但是top half乘的是29 28 29 28 ... 这样位宽表示的P
{0x1fffffff, 0xfffffff, 0x7f, 0xffffc00, 0x1fffffff, 0xfffffff, 0x1fffffff, 0xeffffff, 0xfffffff}
,而bottom half是乘的28 29 28 29... 这样位宽表示的P{0xfffffff, 0x1fffffff, 0x7f, 0x1ffff800, 0xfffffff, 0x1fffffff, 0xfffffff, 0x1dffffff, 0xfffffff}
,之所以这样是为了和tmp2中的每个word的位宽保持一致,这样方便把乘法表示成加减和位移运算。二, 就是x 要乘以 0x1ffff800,而0x1ffff800表示成2^29 - 2^11,这是bottom half中乘以P的第四个word。
一,这里的position是指的bit表示的起始位置,参考方法开始部分的注释。