📄 mul_1.s
字号:
; mc88110 __mpn_mul_1 -- Multiply a limb vector with a single limb and; store the product in a second limb vector.; Copyright (C) 1992, 1994 Free Software Foundation, Inc.; This file is part of the GNU MP Library.; The GNU MP Library is free software; you can redistribute it and/or modify; it under the terms of the GNU General Public License as published by; the Free Software Foundation; either version 2, or (at your option); any later version.; The GNU MP Library is distributed in the hope that it will be useful,; but WITHOUT ANY WARRANTY; without even the implied warranty of; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the; GNU General Public License for more details.; You should have received a copy of the GNU General Public License; along with the GNU MP Library; see the file COPYING. If not, write to; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.; INPUT PARAMETERS; res_ptr r2; s1_ptr r3; size r4; s2_limb r5#include "sysdep.h"ENTRY (__mpn_mul_1) ld r6,r3,0 sub r4,r0,r4 sub r3,r3,r4 ; r3 is offset s1_ptr sub r2,r2,r4 sub r8,r2,8 ; r8 is offset res_ptr mulu.d r10,r6,r5 addu r4,r4,1 bcnd eq0,r4,Lend addu.co r2,r0,0 ; clear cy_limbLoop: ld r6,r3[r4] addu.cio r9,r11,r2 or r2,r10,r0 ; could be avoided if unrolled addu r4,r4,1 mulu.d r10,r6,r5 bcnd ne0,r4,Loop st r9,r8[r4]Lend: addu.cio r9,r11,r2 st r9,r8,4 jmp.n r1 addu.ci r2,r10,r0; This is the Right Way to do this on '110. 4 cycles / 64-bit limb.; ld.d r10,; mulu.d; addu.cio; addu.cio; st.d; mulu.d ,r11,r5; ld.d r12,; mulu.d ,r10,r5; addu.cio; addu.cio; st.d; mulu.d; ld.d r10,; mulu.d; addu.cio; addu.cio; st.d; mulu.d; ld.d r10,; mulu.d; addu.cio; addu.cio; st.d; mulu.d
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -