📄 bn-win32.asm
字号:
adc eax, eax sub ecx, edx adc eax, 0 mov [4+ebx], ecx ; Round 2 mov ecx, [8+esi] mov edx, [8+edi] sub ecx, eax mov eax, 0 adc eax, eax sub ecx, edx adc eax, 0 mov [8+ebx], ecx ; Round 3 mov ecx, [12+esi] mov edx, [12+edi] sub ecx, eax mov eax, 0 adc eax, eax sub ecx, edx adc eax, 0 mov [12+ebx], ecx ; Round 4 mov ecx, [16+esi] mov edx, [16+edi] sub ecx, eax mov eax, 0 adc eax, eax sub ecx, edx adc eax, 0 mov [16+ebx], ecx ; Round 5 mov ecx, [20+esi] mov edx, [20+edi] sub ecx, eax mov eax, 0 adc eax, eax sub ecx, edx adc eax, 0 mov [20+ebx], ecx ; Round 6 mov ecx, [24+esi] mov edx, [24+edi] sub ecx, eax mov eax, 0 adc eax, eax sub ecx, edx adc eax, 0 mov [24+ebx], ecx ; Round 7 mov ecx, [28+esi] mov edx, [28+edi] sub ecx, eax mov eax, 0 adc eax, eax sub ecx, edx adc eax, 0 mov [28+ebx], ecx ; add esi, 32 add edi, 32 add ebx, 32 sub ebp, 8 jnz NEAR L015aw_loop$L014aw_finish: mov ebp, [32+esp] and ebp, 7 jz NEAR $L016aw_end ; Tail Round 0 mov ecx, [esi] mov edx, [edi] sub ecx, eax mov eax, 0 adc eax, eax sub ecx, edx adc eax, 0 dec ebp mov [ebx], ecx jz NEAR $L016aw_end ; Tail Round 1 mov ecx, [4+esi] mov edx, [4+edi] sub ecx, eax mov eax, 0 adc eax, eax sub ecx, edx adc eax, 0 dec ebp mov [4+ebx], ecx jz NEAR $L016aw_end ; Tail Round 2 mov ecx, [8+esi] mov edx, [8+edi] sub ecx, eax mov eax, 0 adc eax, eax sub ecx, edx adc eax, 0 dec ebp mov [8+ebx], ecx jz NEAR $L016aw_end ; Tail Round 3 mov ecx, [12+esi] mov edx, [12+edi] sub ecx, eax mov eax, 0 adc eax, eax sub ecx, edx adc eax, 0 dec ebp mov [12+ebx], ecx jz NEAR $L016aw_end ; Tail Round 4 mov ecx, [16+esi] mov edx, [16+edi] sub ecx, eax mov eax, 0 adc eax, eax sub ecx, edx adc eax, 0 dec ebp mov [16+ebx], ecx jz NEAR $L016aw_end ; Tail Round 5 mov ecx, [20+esi] mov edx, [20+edi] sub ecx, eax mov eax, 0 adc eax, eax sub ecx, edx adc eax, 0 dec ebp mov [20+ebx], ecx jz NEAR $L016aw_end ; Tail Round 6 mov ecx, [24+esi] mov edx, [24+edi] sub ecx, eax mov eax, 0 adc eax, eax sub ecx, edx adc eax, 0 mov [24+ebx], ecx$L016aw_end: pop edi pop esi pop ebx pop ebp retglobal _bn_mul_comba8_bn_mul_comba8: push esi mov esi, [12+esp] push edi mov edi, [20+esp] push ebp push ebx xor ebx, ebx mov eax, [esi] xor ecx, ecx mov edx, [edi] ; ################## Calculate word 0 xor ebp, ebp ; mul a[0]*b[0] mul edx add ebx, eax mov eax, [20+esp] adc ecx, edx mov edx, [edi] adc ebp, 0 mov [eax], ebx mov eax, [4+esi] ; saved r[0] ; ################## Calculate word 1 xor ebx, ebx ; mul a[1]*b[0] mul edx add ecx, eax mov eax, [esi] adc ebp, edx mov edx, [4+edi] adc ebx, 0 ; mul a[0]*b[1] mul edx add ecx, eax mov eax, [20+esp] adc ebp, edx mov edx, [edi] adc ebx, 0 mov [4+eax], ecx mov eax, [8+esi] ; saved r[1] ; ################## Calculate word 2 xor ecx, ecx ; mul a[2]*b[0] mul edx add ebp, eax mov eax, [4+esi] adc ebx, edx mov edx, [4+edi] adc ecx, 0 ; mul a[1]*b[1] mul edx add ebp, eax mov eax, [esi] adc ebx, edx mov edx, [8+edi] adc ecx, 0 ; mul a[0]*b[2] mul edx add ebp, eax mov eax, [20+esp] adc ebx, edx mov edx, [edi] adc ecx, 0 mov [8+eax], ebp mov eax, [12+esi] ; saved r[2] ; ################## Calculate word 3 xor ebp, ebp ; mul a[3]*b[0] mul edx add ebx, eax mov eax, [8+esi] adc ecx, edx mov edx, [4+edi] adc ebp, 0 ; mul a[2]*b[1] mul edx add ebx, eax mov eax, [4+esi] adc ecx, edx mov edx, [8+edi] adc ebp, 0 ; mul a[1]*b[2] mul edx add ebx, eax mov eax, [esi] adc ecx, edx mov edx, [12+edi] adc ebp, 0 ; mul a[0]*b[3] mul edx add ebx, eax mov eax, [20+esp] adc ecx, edx mov edx, [edi] adc ebp, 0 mov [12+eax], ebx mov eax, [16+esi] ; saved r[3] ; ################## Calculate word 4 xor ebx, ebx ; mul a[4]*b[0] mul edx add ecx, eax mov eax, [12+esi] adc ebp, edx mov edx, [4+edi] adc ebx, 0 ; mul a[3]*b[1] mul edx add ecx, eax mov eax, [8+esi] adc ebp, edx mov edx, [8+edi] adc ebx, 0 ; mul a[2]*b[2] mul edx add ecx, eax mov eax, [4+esi] adc ebp, edx mov edx, [12+edi] adc ebx, 0 ; mul a[1]*b[3] mul edx add ecx, eax mov eax, [esi] adc ebp, edx mov edx, [16+edi] adc ebx, 0 ; mul a[0]*b[4] mul edx add ecx, eax mov eax, [20+esp] adc ebp, edx mov edx, [edi] adc ebx, 0 mov [16+eax], ecx mov eax, [20+esi] ; saved r[4] ; ################## Calculate word 5 xor ecx, ecx ; mul a[5]*b[0] mul edx add ebp, eax mov eax, [16+esi] adc ebx, edx mov edx, [4+edi] adc ecx, 0 ; mul a[4]*b[1] mul edx add ebp, eax mov eax, [12+esi] adc ebx, edx mov edx, [8+edi] adc ecx, 0 ; mul a[3]*b[2] mul edx add ebp, eax mov eax, [8+esi] adc ebx, edx mov edx, [12+edi] adc ecx, 0 ; mul a[2]*b[3] mul edx add ebp, eax mov eax, [4+esi] adc ebx, edx mov edx, [16+edi] adc ecx, 0 ; mul a[1]*b[4] mul edx add ebp, eax mov eax, [esi] adc ebx, edx mov edx, [20+edi] adc ecx, 0 ; mul a[0]*b[5] mul edx add ebp, eax mov eax, [20+esp] adc ebx, edx mov edx, [edi] adc ecx, 0 mov [20+eax], ebp mov eax, [24+esi] ; saved r[5] ; ################## Calculate word 6 xor ebp, ebp ; mul a[6]*b[0] mul edx add ebx, eax mov eax, [20+esi] adc ecx, edx mov edx, [4+edi] adc ebp, 0 ; mul a[5]*b[1] mul edx add ebx, eax mov eax, [16+esi] adc ecx, edx mov edx, [8+edi] adc ebp, 0 ; mul a[4]*b[2] mul edx add ebx, eax mov eax, [12+esi] adc ecx, edx mov edx, [12+edi] adc ebp, 0 ; mul a[3]*b[3] mul edx add ebx, eax mov eax, [8+esi] adc ecx, edx mov edx, [16+edi] adc ebp, 0 ; mul a[2]*b[4] mul edx add ebx, eax mov eax, [4+esi] adc ecx, edx mov edx, [20+edi] adc ebp, 0 ; mul a[1]*b[5] mul edx add ebx, eax mov eax, [esi] adc ecx, edx mov edx, [24+edi] adc ebp, 0 ; mul a[0]*b[6] mul edx add ebx, eax mov eax, [20+esp] adc ecx, edx mov edx, [edi] adc ebp, 0 mov [24+eax], ebx mov eax, [28+esi] ; saved r[6] ; ################## Calculate word 7 xor ebx, ebx ; mul a[7]*b[0] mul edx add ecx, eax mov eax, [24+esi] adc ebp, edx mov edx, [4+edi] adc ebx, 0 ; mul a[6]*b[1] mul edx add ecx, eax mov eax, [20+esi] adc ebp, edx mov edx, [8+edi] adc ebx, 0 ; mul a[5]*b[2] mul edx add ecx, eax mov eax, [16+esi] adc ebp, edx mov edx, [12+edi] adc ebx, 0 ; mul a[4]*b[3] mul edx add ecx, eax mov eax, [12+esi] adc ebp, edx mov edx, [16+edi] adc ebx, 0 ; mul a[3]*b[4] mul edx add ecx, eax mov eax, [8+esi] adc ebp, edx mov edx, [20+edi] adc ebx, 0 ; mul a[2]*b[5] mul edx add ecx, eax mov eax, [4+esi] adc ebp, edx mov edx, [24+edi] adc ebx, 0 ; mul a[1]*b[6] mul edx add ecx, eax mov eax, [esi] adc ebp, edx mov edx, [28+edi] adc ebx, 0 ; mul a[0]*b[7] mul edx add ecx, eax mov eax, [20+esp] adc ebp, edx mov edx, [4+edi] adc ebx, 0 mov [28+eax], ecx mov eax, [28+esi] ; saved r[7] ; ################## Calculate word 8 xor ecx, ecx ; mul a[7]*b[1] mul edx add ebp, eax mov eax, [24+esi] adc ebx, edx mov edx, [8+edi] adc ecx, 0 ; mul a[6]*b[2] mul edx add ebp, eax mov eax, [20+esi] adc ebx, edx mov edx, [12+edi] adc ecx, 0 ; mul a[5]*b[3] mul edx add ebp, eax mov eax, [16+esi] adc ebx, edx mov edx, [16+edi] adc ecx, 0 ; mul a[4]*b[4] mul edx add ebp, eax mov eax, [12+esi] adc ebx, edx mov edx, [20+edi] adc ecx, 0 ; mul a[3]*b[5] mul edx add ebp, eax mov eax, [8+esi] adc ebx, edx mov edx, [24+edi] adc ecx, 0 ; mul a[2]*b[6] mul edx add ebp, eax mov eax, [4+esi] adc ebx, edx mov edx, [28+edi] adc ecx, 0 ; mul a[1]*b[7] mul edx add ebp, eax mov eax, [20+esp] adc ebx, edx mov edx, [8+edi] adc ecx, 0 mov [32+eax], ebp mov eax, [28+esi] ; saved r[8] ; ################## Calculate word 9 xor ebp, ebp ; mul a[7]*b[2] mul edx add ebx, eax mov eax, [24+esi] adc ecx, edx mov edx, [12+edi] adc ebp, 0 ; mul a[6]*b[3] mul edx add ebx, eax mov eax, [20+esi] adc ecx, edx mov edx, [16+edi] adc ebp, 0 ; mul a[5]*b[4] mul edx add ebx, eax mov eax, [16+esi] adc ecx, edx mov edx, [20+edi] adc ebp, 0 ; mul a[4]*b[5] mul edx add ebx, eax mov eax, [12+esi] adc ecx, edx mov edx, [24+edi] adc ebp, 0 ; mul a[3]*b[6] mul edx add ebx, eax mov eax, [8+esi] adc ecx, edx mov edx, [28+edi] adc ebp, 0 ; mul a[2]*b[7] mul edx add ebx, eax mov eax, [20+esp] adc ecx, edx mov edx, [12+edi] adc ebp, 0 mov [36+eax], ebx mov eax, [28+esi] ; saved r[9] ; ################## Calculate word 10 xor ebx, ebx ; mul a[7]*b[3] mul edx add ecx, eax mov eax, [24+esi] adc ebp, edx mov edx, [16+edi] adc ebx, 0 ; mul a[6]*b[4] mul edx add ecx, eax mov eax, [20+esi] adc ebp, edx mov edx, [20+edi] adc ebx, 0 ; mul a[5]*b[5] mul edx add ecx, eax mov eax, [16+esi] adc ebp, edx mov edx, [24+edi] adc ebx, 0 ; mul a[4]*b[6] mul edx add ecx, eax mov eax, [12+esi] adc ebp, edx mov edx, [28+edi] adc ebx, 0 ; mul a[3]*b[7] mul edx add ecx, eax mov eax, [20+esp] adc ebp, edx mov edx, [16+edi] adc ebx, 0 mov [40+eax], ecx mov eax, [28+esi] ; saved r[10] ; ################## Calculate word 11 xor ecx, ecx ; mul a[7]*b[4] mul edx add ebp, eax mov eax, [24+esi] adc ebx, edx mov edx, [20+edi] adc ecx, 0 ; mul a[6]*b[5] mul edx add ebp, eax mov eax, [20+esi] adc ebx, edx mov edx, [24+edi] adc ecx, 0 ; mul a[5]*b[6] mul edx add ebp, eax mov eax, [16+esi] adc ebx, edx mov edx, [28+edi] adc ecx, 0 ; mul a[4]*b[7] mul edx add ebp, eax mov eax, [20+esp] adc ebx, edx mov edx, [20+edi] adc ecx, 0 mov [44+eax], ebp mov eax, [28+esi] ; saved r[11] ; ################## Calculate word 12 xor ebp, ebp ; mul a[7]*b[5] mul edx add ebx, eax mov eax, [24+esi] adc ecx, edx mov edx, [24+edi] adc ebp, 0 ; mul a[6]*b[6] mul edx add ebx, eax mov eax, [20+esi] adc ecx, edx mov edx, [28+edi] adc ebp, 0 ; mul a[5]*b[7] mul edx add ebx, eax mov eax, [20+esp] adc ecx, edx mov edx, [24+edi] adc ebp, 0 mov [48+eax], ebx mov eax, [28+esi] ; saved r[12] ; ################## Calculate word 13 xor ebx, ebx ; mul a[7]*b[6] mul edx add ecx, eax mov eax, [24+esi] adc ebp, edx mov edx, [28+edi] adc ebx, 0 ; mul a[6]*b[7] mul edx add ecx, eax mov eax, [20+esp] adc ebp, edx mov edx, [28+edi] adc ebx, 0 mov [52+eax], ecx mov eax, [28+esi] ; saved r[13] ; ################## Calculate word 14 xor ecx, ecx ; mul a[7]*b[7] mul edx add ebp, eax mov eax, [20+esp] adc ebx, edx adc ecx, 0 mov [56+eax], ebp ; saved r[14] ; save r[15] mov [60+eax], ebx pop ebx pop ebp pop edi pop esi retglobal _bn_mul_comba4_bn_mul_comba4: push esi mov esi, [12+esp] push edi
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -