⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pa-risc2w.s

📁 mediastreamer2是开源的网络传输媒体流的库
💻 S
📖 第 1 页 / 共 4 页
字号:
    FSTD    ht_temp,-24(%sp)          ; -24(sp) = ht    XMPYU   flt_0,fw_l,lt_temp        ; lt_temp = lt*fw_l    FSTD    lt_temp,-32(%sp)          ; -32(sp) = lt     LDD     -8(%sp),m_0                   LDD    -16(%sp),m1_0                  ADD,L   m_0,m1_0,tmp_0            ; tmp_0 = m + m1;     LDD     -24(%sp),ht_0                 LDD     -32(%sp),lt_0                 CMPCLR,*>>= tmp_0,m1_0,%r0        ; if (m < m1)    ADD,L   ht_0,top_overflow,ht_0    ; ht += (1<<32)    EXTRD,U tmp_0,31,32,m_0           ; m>>32      DEPD,Z  tmp_0,31,32,m1_0          ; m1 = m<<32     ADD,L   ht_0,m_0,ht_0             ; ht+= (m>>32)    ADD     lt_0,m1_0,lt_0            ; lt= lt+m1;    ADD,DC  ht_0,%r0,ht_0             ; ht++    ADD     %ret0,lt_0,lt_0           ; lt = lt + c;    ADD,DC  ht_0,%r0,ht_0             ; ht++    COPY    ht_0,%ret0                ; copy carry    STD     lt_0,0(r_ptr)             ; rp[0] = ltbn_mul_words_exit    .EXIT    LDD     -96(%sp),%r7              ; restore r7      LDD     -104(%sp),%r6             ; restore r6      LDD     -112(%sp),%r5             ; restore r5      LDD     -120(%sp),%r4             ; restore r4      BVE     (%rp)    LDD,MB  -128(%sp),%r3             ; restore r3	.PROCEND	;in=23,24,25,26,29;out=28;;----------------------------------------------------------------------------;;void bn_sqr_words(BN_ULONG *rp, BN_ULONG *ap, int num);; arg0 = rp; arg1 = ap; arg2 = num;bn_sqr_words	.proc	.callinfo FRAME=128,ENTRY_GR=%r3,ARGS_SAVED,ORDERING_AWARE	.EXPORT	bn_sqr_words,ENTRY,PRIV_LEV=3,NO_RELOCATION,LONG_RETURN    .entry	.align 64    STD     %r3,0(%sp)          ; save r3      STD     %r4,8(%sp)          ; save r4  	NOP    STD     %r5,16(%sp)         ; save r5      CMPIB,>= 0,num,bn_sqr_words_exit	LDO     128(%sp),%sp       ; bump stack	;	; If only 1, the goto straight to cleanup	;	CMPIB,= 1,num,bn_sqr_words_single_top    DEPDI,Z -1,32,33,high_mask   ; Create Mask 0xffffffff80000000L	;	; This loop is unrolled 2 times (64-byte aligned as well)	;bn_sqr_words_unroll2    FLDD    0(a_ptr),t_float_0        ; a[0]    FLDD    8(a_ptr),t_float_1        ; a[1]    XMPYU   fht_0,flt_0,fm            ; m[0]    XMPYU   fht_1,flt_1,fm_1          ; m[1]    FSTD    fm,-24(%sp)               ; store m[0]    FSTD    fm_1,-56(%sp)             ; store m[1]    XMPYU   flt_0,flt_0,lt_temp       ; lt[0]    XMPYU   flt_1,flt_1,lt_temp_1     ; lt[1]    FSTD    lt_temp,-16(%sp)          ; store lt[0]    FSTD    lt_temp_1,-48(%sp)        ; store lt[1]    XMPYU   fht_0,fht_0,ht_temp       ; ht[0]    XMPYU   fht_1,fht_1,ht_temp_1     ; ht[1]    FSTD    ht_temp,-8(%sp)           ; store ht[0]    FSTD    ht_temp_1,-40(%sp)        ; store ht[1]    LDD     -24(%sp),m_0                 LDD     -56(%sp),m_1                  AND     m_0,high_mask,tmp_0       ; m[0] & Mask    AND     m_1,high_mask,tmp_1       ; m[1] & Mask    DEPD,Z  m_0,30,31,m_0             ; m[0] << 32+1    DEPD,Z  m_1,30,31,m_1             ; m[1] << 32+1    LDD     -16(%sp),lt_0            LDD     -48(%sp),lt_1            EXTRD,U tmp_0,32,33,tmp_0         ; tmp_0 = m[0]&Mask >> 32-1    EXTRD,U tmp_1,32,33,tmp_1         ; tmp_1 = m[1]&Mask >> 32-1    LDD     -8(%sp),ht_0                LDD     -40(%sp),ht_1               ADD,L   ht_0,tmp_0,ht_0           ; ht[0] += tmp_0    ADD,L   ht_1,tmp_1,ht_1           ; ht[1] += tmp_1    ADD     lt_0,m_0,lt_0             ; lt = lt+m    ADD,DC  ht_0,%r0,ht_0             ; ht[0]++    STD     lt_0,0(r_ptr)             ; rp[0] = lt[0]    STD     ht_0,8(r_ptr)             ; rp[1] = ht[1]    ADD     lt_1,m_1,lt_1             ; lt = lt+m    ADD,DC  ht_1,%r0,ht_1             ; ht[1]++    STD     lt_1,16(r_ptr)            ; rp[2] = lt[1]    STD     ht_1,24(r_ptr)            ; rp[3] = ht[1]	LDO    -2(num),num                ; num = num - 2;    LDO     16(a_ptr),a_ptr           ; ap += 2	CMPIB,<= 2,num,bn_sqr_words_unroll2    LDO     32(r_ptr),r_ptr           ; rp += 4    CMPIB,=,N 0,num,bn_sqr_words_exit ; are we done?	;	; Top of loop aligned on 64-byte boundary	;bn_sqr_words_single_top    FLDD    0(a_ptr),t_float_0        ; load up 64-bit value (fr8L) ht(L)/lt(R)    XMPYU   fht_0,flt_0,fm            ; m    FSTD    fm,-24(%sp)               ; store m    XMPYU   flt_0,flt_0,lt_temp       ; lt    FSTD    lt_temp,-16(%sp)          ; store lt    XMPYU   fht_0,fht_0,ht_temp       ; ht    FSTD    ht_temp,-8(%sp)           ; store ht    LDD     -24(%sp),m_0              ; load m    AND     m_0,high_mask,tmp_0       ; m & Mask    DEPD,Z  m_0,30,31,m_0             ; m << 32+1    LDD     -16(%sp),lt_0             ; lt    LDD     -8(%sp),ht_0              ; ht    EXTRD,U tmp_0,32,33,tmp_0         ; tmp_0 = m&Mask >> 32-1    ADD     m_0,lt_0,lt_0             ; lt = lt+m    ADD,L   ht_0,tmp_0,ht_0           ; ht += tmp_0    ADD,DC  ht_0,%r0,ht_0             ; ht++    STD     lt_0,0(r_ptr)             ; rp[0] = lt    STD     ht_0,8(r_ptr)             ; rp[1] = htbn_sqr_words_exit    .EXIT    LDD     -112(%sp),%r5       ; restore r5      LDD     -120(%sp),%r4       ; restore r4      BVE     (%rp)    LDD,MB  -128(%sp),%r3 	.PROCEND	;in=23,24,25,26,29;out=28;;----------------------------------------------------------------------------;;BN_ULONG bn_add_words(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, int n);; arg0 = rp ; arg1 = ap; arg2 = bp ; arg3 = nt  .reg %r22b  .reg %r21l  .reg %r20bn_add_words	.proc    .entry	.callinfo	.EXPORT	bn_add_words,ENTRY,PRIV_LEV=3,NO_RELOCATION,LONG_RETURN	.align 64    CMPIB,>= 0,n,bn_add_words_exit    COPY    %r0,%ret0           ; return 0 by default	;	; If 2 or more numbers do the loop	;	CMPIB,= 1,n,bn_add_words_single_top	NOP	;	; This loop is unrolled 2 times (64-byte aligned as well)	;bn_add_words_unroll2	LDD     0(a_ptr),t	LDD     0(b_ptr),b	ADD     t,%ret0,t                    ; t = t+c;	ADD,DC  %r0,%r0,%ret0                ; set c to carry	ADD     t,b,l                        ; l = t + b[0]	ADD,DC  %ret0,%r0,%ret0              ; c+= carry	STD     l,0(r_ptr)	LDD     8(a_ptr),t	LDD     8(b_ptr),b	ADD     t,%ret0,t                     ; t = t+c;	ADD,DC  %r0,%r0,%ret0                 ; set c to carry	ADD     t,b,l                         ; l = t + b[0]	ADD,DC  %ret0,%r0,%ret0               ; c+= carry	STD     l,8(r_ptr)	LDO     -2(n),n	LDO     16(a_ptr),a_ptr	LDO     16(b_ptr),b_ptr	CMPIB,<= 2,n,bn_add_words_unroll2	LDO     16(r_ptr),r_ptr    CMPIB,=,N 0,n,bn_add_words_exit ; are we done?bn_add_words_single_top	LDD     0(a_ptr),t	LDD     0(b_ptr),b	ADD     t,%ret0,t                 ; t = t+c;	ADD,DC  %r0,%r0,%ret0             ; set c to carry (could use CMPCLR??)	ADD     t,b,l                     ; l = t + b[0]	ADD,DC  %ret0,%r0,%ret0           ; c+= carry	STD     l,0(r_ptr)bn_add_words_exit    .EXIT    BVE     (%rp)	NOP	.PROCEND	;in=23,24,25,26,29;out=28;;----------------------------------------------------------------------------;;BN_ULONG bn_sub_words(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, int n);; arg0 = rp ; arg1 = ap; arg2 = bp ; arg3 = nt1       .reg %r22t2       .reg %r21sub_tmp1 .reg %r20sub_tmp2 .reg %r19bn_sub_words	.proc	.callinfo 	.EXPORT	bn_sub_words,ENTRY,PRIV_LEV=3,NO_RELOCATION,LONG_RETURN    .entry	.align 64    CMPIB,>=  0,n,bn_sub_words_exit    COPY    %r0,%ret0           ; return 0 by default	;	; If 2 or more numbers do the loop	;	CMPIB,= 1,n,bn_sub_words_single_top	NOP	;	; This loop is unrolled 2 times (64-byte aligned as well)	;bn_sub_words_unroll2	LDD     0(a_ptr),t1	LDD     0(b_ptr),t2	SUB     t1,t2,sub_tmp1           ; t3 = t1-t2; 	SUB     sub_tmp1,%ret0,sub_tmp1  ; t3 = t3- c; 	CMPCLR,*>> t1,t2,sub_tmp2        ; clear if t1 > t2	LDO      1(%r0),sub_tmp2		CMPCLR,*= t1,t2,%r0	COPY    sub_tmp2,%ret0	STD     sub_tmp1,0(r_ptr)	LDD     8(a_ptr),t1	LDD     8(b_ptr),t2	SUB     t1,t2,sub_tmp1            ; t3 = t1-t2; 	SUB     sub_tmp1,%ret0,sub_tmp1   ; t3 = t3- c; 	CMPCLR,*>> t1,t2,sub_tmp2         ; clear if t1 > t2	LDO      1(%r0),sub_tmp2		CMPCLR,*= t1,t2,%r0	COPY    sub_tmp2,%ret0	STD     sub_tmp1,8(r_ptr)	LDO     -2(n),n	LDO     16(a_ptr),a_ptr	LDO     16(b_ptr),b_ptr	CMPIB,<= 2,n,bn_sub_words_unroll2	LDO     16(r_ptr),r_ptr    CMPIB,=,N 0,n,bn_sub_words_exit ; are we done?bn_sub_words_single_top	LDD     0(a_ptr),t1	LDD     0(b_ptr),t2	SUB     t1,t2,sub_tmp1            ; t3 = t1-t2; 	SUB     sub_tmp1,%ret0,sub_tmp1   ; t3 = t3- c; 	CMPCLR,*>> t1,t2,sub_tmp2         ; clear if t1 > t2	LDO      1(%r0),sub_tmp2		CMPCLR,*= t1,t2,%r0	COPY    sub_tmp2,%ret0	STD     sub_tmp1,0(r_ptr)bn_sub_words_exit    .EXIT    BVE     (%rp)	NOP	.PROCEND	;in=23,24,25,26,29;out=28;;------------------------------------------------------------------------------;; unsigned long bn_div_words(unsigned long h, unsigned long l, unsigned long d);; arg0 = h; arg1 = l; arg2 = d;; This is mainly just modified assembly from the compiler, thus the; lack of variable names.;;------------------------------------------------------------------------------bn_div_words	.proc	.callinfo CALLER,FRAME=272,ENTRY_GR=%r10,SAVE_RP,ARGS_SAVED,ORDERING_AWARE	.EXPORT	bn_div_words,ENTRY,PRIV_LEV=3,NO_RELOCATION,LONG_RETURN	.IMPORT	BN_num_bits_word,CODE,NO_RELOCATION	.IMPORT	__iob,DATA	.IMPORT	fprintf,CODE,NO_RELOCATION	.IMPORT	abort,CODE,NO_RELOCATION	.IMPORT	$$div2U,MILLICODE    .entry    STD     %r2,-16(%r30)       STD,MA  %r3,352(%r30)       STD     %r4,-344(%r30)      STD     %r5,-336(%r30)      STD     %r6,-328(%r30)      STD     %r7,-320(%r30)      STD     %r8,-312(%r30)      STD     %r9,-304(%r30)      STD     %r10,-296(%r30)    STD     %r27,-288(%r30)             ; save gp    COPY    %r24,%r3           ; save d     COPY    %r26,%r4           ; save h (high 64-bits)    LDO      -1(%r0),%ret0     ; return -1 by default	    CMPB,*=  %r0,%arg2,$D3     ; if (d == 0)    COPY    %r25,%r5           ; save l (low 64-bits)    LDO     -48(%r30),%r29     ; create ap     .CALL   ;in=26,29;out=28;    B,L     BN_num_bits_word,%r2     COPY    %r3,%r26            LDD     -288(%r30),%r27    ; restore gp     LDI     64,%r21     CMPB,=  %r21,%ret0,$00000012   ;if (i == 64) (forward)     COPY    %ret0,%r24             ; i       MTSARCM %r24        DEPDI,Z -1,%sar,1,%r29      CMPB,*<<,N %r29,%r4,bn_div_err_case ; if (h > 1<<i) (forward) $00000012    SUBI    64,%r24,%r31                       ; i = 64 - i;    CMPCLR,*<< %r4,%r3,%r0                     ; if (h >= d)    SUB     %r4,%r3,%r4                        ; h -= d    CMPB,=  %r31,%r0,$0000001A                 ; if (i)    COPY    %r0,%r10                           ; ret = 0    MTSARCM %r31                               ; i to shift    DEPD,Z  %r3,%sar,64,%r3                    ; d <<= i;    SUBI    64,%r31,%r19                       ; 64 - i; redundent    MTSAR   %r19                               ; (64 -i) to shift    SHRPD   %r4,%r5,%sar,%r4                   ; l>> (64-i)    MTSARCM %r31                               ; i to shift    DEPD,Z  %r5,%sar,64,%r5                    ; l <<= i;$0000001A    DEPDI,Z -1,31,32,%r19                          EXTRD,U %r3,31,32,%r6                      ; dh=(d&0xfff)>>32    EXTRD,U %r3,63,32,%r8                      ; dl = d&0xffffff    LDO     2(%r0),%r9    STD    %r3,-280(%r30)                      ; "d" to stack$0000001C    DEPDI,Z -1,63,32,%r29                      ;     EXTRD,U %r4,31,32,%r31                     ; h >> 32    CMPB,*=,N  %r31,%r6,$D2     	       ; if ((h>>32) != dh)(forward) div    COPY    %r4,%r26           EXTRD,U %r4,31,32,%r25 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -