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

📄 xvid_ppc.asm

📁 一个用于智能手机的多媒体库适合S60 WinCE的跨平台开发库
💻 ASM
字号:
   AREA XVID,CODE,READONLY   EXPORT XVID_ClearMatrix   EXPORT XVID_MemCpy   EXPORT interpolate8x8_halfpel_hv   EXPORT interpolate8x8_halfpel_h   EXPORT interpolate8x8_halfpel_v   EXPORT transfer8x8_copy;----------------------------XVID_ClearMatrix   mov r1, #0   mov r2, #0   mov r3, #0   mov r12, #0   stmia r0!, { r1, r2, r3, r12 }   stmia r0!, { r1, r2, r3, r12 }   stmia r0!, { r1, r2, r3, r12 }   stmia r0!, { r1, r2, r3, r12 }   stmia r0!, { r1, r2, r3, r12 }   stmia r0!, { r1, r2, r3, r12 }   stmia r0!, { r1, r2, r3, r12 }   stmia r0!, { r1, r2, r3, r12 }   stmia r0!, { r1, r2, r3, r12 }   stmia r0!, { r1, r2, r3, r12 }   stmia r0!, { r1, r2, r3, r12 }   stmia r0!, { r1, r2, r3, r12 }   stmia r0!, { r1, r2, r3, r12 }   stmia r0!, { r1, r2, r3, r12 }   stmia r0!, { r1, r2, r3, r12 }   stmia r0!, { r1, r2, r3, r12 }   mov pc, lr;----------------------------XVID_MemCpy   stmfd sp!, { r4 - r6 }   subs r2, r2, #16   blt mc_no16mc_loop16                              ;the order of regs in {} is not important, now it's ordered as to avoid compiler warnings   ldmia r1!, { r3 - r6 }   stmia r0!, { r3 - r6 }   subs r2, r2, #16   bge mc_loop16mc_no16   adds r2, r2, #16   beq mc_endmc_loop4   ldr r3, [r1], #4   str r3, [r0], #4   subs r2, r2, #4   bne mc_loop4mc_end   ldmfd sp!, { r4 - r6 }   mov pc, lr;----------------------------interpolate8x8_halfpel_hv   stmfd sp!, { r4 - r9, r14 }   tst r3, r3   movne r14, #1   moveq r14, #2   mov r3, #8ihhv_loop   add r4, r1, r2   ldrb r5, [r1, #8]   ldrb r7, [r4, #8]   add r5, r5, r7                           ;7+8   ldrb r6, [r1, #7]   ldrb r7, [r4, #7]   add r6, r6, r7   add r7, r5, r6   add r7, r7, r14   mov r8, r7, asr #2                           ;6+7   ldrb r5, [r1, #6]   ldrb r7, [r4, #6]   add r5, r5, r7   add r7, r5, r6   add r7, r7, r14   mov r7, r7, asr #2   orr r8, r7, r8, asl #8                           ;5+6   ldrb r6, [r1, #5]   ldrb r7, [r4, #5]   add r6, r6, r7   add r7, r5, r6   add r7, r7, r14   mov r7, r7, asr #2   orr r8, r7, r8, asl #8                           ;4+5   ldrb r5, [r1, #4]   ldrb r7, [r4, #4]   add r5, r5, r7   add r7, r5, r6   add r7, r7, r14   mov r7, r7, asr #2   orr r8, r7, r8, asl #8   str r8, [r0, #4]                           ;3+4   ldrb r6, [r1, #3]   ldrb r7, [r4, #3]   add r6, r6, r7   add r7, r5, r6   add r7, r7, r14   mov r8, r7, asr #2                           ;2+3   ldrb r5, [r1, #2]   ldrb r7, [r4, #2]   add r5, r5, r7   add r7, r5, r6   add r7, r7, r14   mov r7, r7, asr #2   orr r8, r7, r8, asl #8                           ;1+2   ldrb r6, [r1, #1]   ldrb r7, [r4, #1]   add r6, r6, r7   add r7, r5, r6   add r7, r7, r14   mov r7, r7, asr #2   orr r8, r7, r8, asl #8                           ;0+1   ldrb r5, [r1, #0]   ldrb r7, [r4, #0]   add r5, r5, r7   add r7, r5, r6   add r7, r7, r14   mov r7, r7, asr #2   orr r8, r7, r8, asl #8   str r8, [r0, #0]   add r0, r0, r2   add r1, r1, r2   subs r3, r3, #1   bne ihhv_loop   ldmfd sp!, { r4 - r9, r14 }   mov pc, lr;----------------------------interpolate8x8_halfpel_h   stmfd sp!, { r4 - r6 }   ands r3, r3, #1   beq i_hp_h_no_round   mov r6, #8ihh_loop   ldrb r12, [r1, #8]                                 ;7+8   ldrb r3, [r1, #7]   add r4, r12, r3   mov r4, r4, asr #1                                 ;6+7   ldrb r12, [r1, #6]   add r5, r12, r3   mov r5, r5, asr #1   orr r4, r5, r4, asl #8                                 ;5+6   ldrb r3, [r1, #5]   add r5, r12, r3   mov r5, r5, asr #1   orr r4, r5, r4, asl #8                                 ;4+5   ldrb r12, [r1, #4]   add r5, r12, r3   mov r5, r5, asr #1   orr r4, r5, r4, asl #8   str r4, [r0, #4]                                 ;3+4   ldrb r3, [r1, #3]   add r4, r12, r3   mov r4, r4, asr #1                                 ;2+3   ldrb r12, [r1, #2]   add r5, r12, r3   mov r5, r5, asr #1   orr r4, r5, r4, asl #8                                 ;1+2   ldrb r3, [r1, #1]   add r5, r12, r3   mov r5, r5, asr #1   orr r4, r5, r4, asl #8                                 ;0+1   ldrb r12, [r1, #0]   add r5, r12, r3   mov r5, r5, asr #1   orr r4, r5, r4, asl #8   str r4, [r0, #0]   add r0, r0, r2   add r1, r1, r2   subs r6, r6, #1      bne ihh_loop   b i_hp_h_endi_hp_h_no_round   mov r6, #8ihh_loop1   ldrb r12, [r1, #8]                                 ;7+8   ldrb r3, [r1, #7]   add r4, r12, r3   add r4, r4, #1   mov r4, r4, asr #1                                 ;6+7   ldrb r12, [r1, #6]   add r5, r12, r3   add r5, r5, #1   mov r5, r5, asr #1   orr r4, r5, r4, asl #8                                 ;5+6   ldrb r3, [r1, #5]   add r5, r12, r3   add r5, r5, #1   mov r5, r5, asr #1   orr r4, r5, r4, asl #8                                 ;4+5   ldrb r12, [r1, #4]   add r5, r12, r3   add r5, r5, #1   mov r5, r5, asr #1   orr r4, r5, r4, asl #8   str r4, [r0, #4]                                 ;3+4   ldrb r3, [r1, #3]   add r4, r12, r3   add r4, r4, #1   mov r4, r4, asr #1                                 ;2+3   ldrb r12, [r1, #2]   add r5, r12, r3   add r5, r5, #1   mov r5, r5, asr #1   orr r4, r5, r4, asl #8                                 ;1+2   ldrb r3, [r1, #1]   add r5, r12, r3   add r5, r5, #1   mov r5, r5, asr #1   orr r4, r5, r4, asl #8                                 ;0+1   ldrb r12, [r1, #0]   add r5, r12, r3   add r5, r5, #1   mov r5, r5, asr #1   orr r4, r5, r4, asl #8   str r4, [r0, #0]   add r0, r0, r2   add r1, r1, r2   subs r6, r6, #1      bne ihh_loop1i_hp_h_end   ldmfd sp!, { r4 - r6 }   mov pc, lr;----------------------------interpolate8x8_halfpel_v   stmfd sp!, { r4 - r6 }   ands r3, r3, #1   beq i_hp_v_no_round   mov r6, #8ihv_loop   add r5, r1, r2                           ;3   ldrb r12, [r1, #3]      ldrb r3, [r5, #3]   add r4, r12, r3      mov r4, r4, asr #1                           ;2   ldrb r12, [r1, #2]      ldrb r3, [r5, #2]   add r12, r12, r3      mov r12, r12, asr #1   orr r4, r12, r4, asl #8                           ;1   ldrb r12, [r1, #1]      ldrb r3, [r5, #1]   add r12, r12, r3      mov r12, r12, asr #1   orr r4, r12, r4, asl #8                           ;0   ldrb r12, [r1, #0]      ldrb r3, [r5, #0]   add r12, r12, r3      mov r12, r12, asr #1   orr r4, r12, r4, asl #8   str r4, [r0, #0]                           ;7   ldrb r12, [r1, #7]      ldrb r3, [r5, #7]   add r4, r12, r3      mov r4, r4, asr #1                           ;6   ldrb r12, [r1, #6]      ldrb r3, [r5, #6]   add r12, r12, r3      mov r12, r12, asr #1   orr r4, r12, r4, asl #8                           ;5   ldrb r12, [r1, #5]      ldrb r3, [r5, #5]   add r12, r12, r3      mov r12, r12, asr #1   orr r4, r12, r4, asl #8                           ;4   ldrb r12, [r1, #4]      ldrb r3, [r5, #4]   add r12, r12, r3      mov r12, r12, asr #1   orr r4, r12, r4, asl #8   str r4, [r0, #4]   add r0, r0, r2      add r1, r1, r2   subs r6, r6, #1      bne ihv_loop   b i_hp_v_endi_hp_v_no_round   mov r6, #8ihv_loop1   add r5, r1, r2                           ;3   ldrb r12, [r1, #3]      ldrb r3, [r5, #3]   add r4, r12, r3      add r4, r4, #1      mov r4, r4, asr #1                           ;2   ldrb r12, [r1, #2]      ldrb r3, [r5, #2]   add r12, r12, r3      add r12, r12, #1      mov r12, r12, asr #1   orr r4, r12, r4, asl #8                           ;1   ldrb r12, [r1, #1]      ldrb r3, [r5, #1]   add r12, r12, r3      add r12, r12, #1      mov r12, r12, asr #1   orr r4, r12, r4, asl #8                           ;0   ldrb r12, [r1, #0]      ldrb r3, [r5, #0]   add r12, r12, r3      add r12, r12, #1      mov r12, r12, asr #1   orr r4, r12, r4, asl #8   str r4, [r0, #0]                           ;7   ldrb r12, [r1, #7]      ldrb r3, [r5, #7]   add r4, r12, r3      add r4, r4, #1      mov r4, r4, asr #1                           ;6   ldrb r12, [r1, #6]      ldrb r3, [r5, #6]   add r12, r12, r3      add r12, r12, #1      mov r12, r12, asr #1   orr r4, r12, r4, asl #8                           ;5   ldrb r12, [r1, #5]      ldrb r3, [r5, #5]   add r12, r12, r3      add r12, r12, #1      mov r12, r12, asr #1   orr r4, r12, r4, asl #8                           ;4   ldrb r12, [r1, #4]      ldrb r3, [r5, #4]   add r12, r12, r3      add r12, r12, #1      mov r12, r12, asr #1   orr r4, r12, r4, asl #8   str r4, [r0, #4]   add r0, r0, r2      add r1, r1, r2   subs r6, r6, #1      bne ihv_loop1i_hp_v_end   ldmfd sp!, { r4 - r6 }   mov pc, lr;----------------------------transfer8x8_copy      orr r12, r1, r2   tst r12, #3   bne tc_no_dw                              ;dword version;tc_dw_loop   ldmia r1, { r12, r3 }     stmia r0, { r12, r3 }   add r0, r0, r2      add r1, r1, r2   ldmia r1, { r12, r3 }     stmia r0, { r12, r3 }   add r0, r0, r2      add r1, r1, r2   ldmia r1, { r12, r3 }     stmia r0, { r12, r3 }   add r0, r0, r2      add r1, r1, r2   ldmia r1, { r12, r3 }     stmia r0, { r12, r3 }   add r0, r0, r2      add r1, r1, r2   ldmia r1, { r12, r3 }     stmia r0, { r12, r3 }   add r0, r0, r2      add r1, r1, r2   ldmia r1, { r12, r3 }     stmia r0, { r12, r3 }   add r0, r0, r2      add r1, r1, r2   ldmia r1, { r12, r3 }     stmia r0, { r12, r3 }   add r0, r0, r2      add r1, r1, r2   ldmia r1, { r12, r3 }     stmia r0, { r12, r3 }   mov pc, lrtc_no_dw   tst r12, #1      bne tc_no_w                           ;word version;tc_w_loop   ldrh r12, [r1, #0]      strh r12, [r0, #0]    ldrh r12, [r1, #2]      strh r12, [r0, #2]    ldrh r12, [r1, #4]      strh r12, [r0, #4]    ldrh r12, [r1, #6]      strh r12, [r0, #6]   add r0, r0, r2      add r1, r1, r2   ldrh r12, [r1, #0]      strh r12, [r0, #0]    ldrh r12, [r1, #2]      strh r12, [r0, #2]    ldrh r12, [r1, #4]      strh r12, [r0, #4]    ldrh r12, [r1, #6]      strh r12, [r0, #6]   add r0, r0, r2      add r1, r1, r2   ldrh r12, [r1, #0]      strh r12, [r0, #0]    ldrh r12, [r1, #2]      strh r12, [r0, #2]    ldrh r12, [r1, #4]      strh r12, [r0, #4]    ldrh r12, [r1, #6]      strh r12, [r0, #6]   add r0, r0, r2      add r1, r1, r2   ldrh r12, [r1, #0]      strh r12, [r0, #0]    ldrh r12, [r1, #2]      strh r12, [r0, #2]    ldrh r12, [r1, #4]      strh r12, [r0, #4]    ldrh r12, [r1, #6]      strh r12, [r0, #6]   add r0, r0, r2      add r1, r1, r2   ldrh r12, [r1, #0]      strh r12, [r0, #0]    ldrh r12, [r1, #2]      strh r12, [r0, #2]    ldrh r12, [r1, #4]      strh r12, [r0, #4]    ldrh r12, [r1, #6]      strh r12, [r0, #6]   add r0, r0, r2      add r1, r1, r2   ldrh r12, [r1, #0]      strh r12, [r0, #0]    ldrh r12, [r1, #2]      strh r12, [r0, #2]    ldrh r12, [r1, #4]      strh r12, [r0, #4]    ldrh r12, [r1, #6]      strh r12, [r0, #6]   add r0, r0, r2      add r1, r1, r2   ldrh r12, [r1, #0]      strh r12, [r0, #0]    ldrh r12, [r1, #2]      strh r12, [r0, #2]    ldrh r12, [r1, #4]      strh r12, [r0, #4]    ldrh r12, [r1, #6]      strh r12, [r0, #6]   add r0, r0, r2      add r1, r1, r2   ldrh r12, [r1, #0]      strh r12, [r0, #0]    ldrh r12, [r1, #2]      strh r12, [r0, #2]    ldrh r12, [r1, #4]      strh r12, [r0, #4]    ldrh r12, [r1, #6]      strh r12, [r0, #6]   mov pc, lrtc_no_w   mov r3, #8tc_b_loop   ldrb r12, [r1, #0]      strb r12, [r0, #0]   ldrb r12, [r1, #1]      strb r12, [r0, #1]   ldrb r12, [r1, #2]      strb r12, [r0, #2]   ldrb r12, [r1, #3]      strb r12, [r0, #3]   ldrb r12, [r1, #4]      strb r12, [r0, #4]   ldrb r12, [r1, #5]      strb r12, [r0, #5]   ldrb r12, [r1, #6]      strb r12, [r0, #6]   ldrb r12, [r1, #7]      strb r12, [r0, #7]   add r0, r0, r2      add r1, r1, r2   subs r3, r3, #1      bne tc_b_loop   mov pc, lr;----------------------------   END

⌨️ 快捷键说明

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