idct.s

来自「这是H.264解码部分:4*4残差块的IDCTARM汇编代码部分.」· S 代码 · 共 85 行

S
85
字号
              AREA           Idct,CODE,READONLY
              
num           EQU            4
              
              ENTRY
              
              
START         LDR            R4,=data
              LDR            R5,=horizontal
              LDR            R6,=vertical
              
              MOV            R7,#0
              MOV            R12,R5
              MOV            R13,R6
              
Horizontal    LDRSH          R0,[R4],#4
              LDRSH          R1,[R4],#4
              LDRSH          R2,[R4],#4
              LDRSH          R3,[R4],#4
              
              ADD            R8,R0,R2
              SUB            R9,R0,R2
              RSB            R10,R3,R1,ASR #1
              ADD            R11,R1,R3,ASR #1
              
              ADD            R0,R8,R11
              ADD            R1,R9,R10
              SUB            R2,R9,R10
              SUB            R3,R8,R11
            
                        
              STRH           R0,[R5],#4
              STRH           R1,[R5],#4
              STRH           R2,[R5],#4
              STRH           R3,[R5],#4
              
              ADD            R7,R7,#1
              CMP            R7,#num
              BLT            Horizontal
              
              MOV            R7,#0
              LDR            R5,=horizontal            
              
Vertical      LDRSH          R0,[R5],#16
              LDRSH          R1,[R5],#16
              LDRSH          R2,[R5],#16
              LDRSH          R3,[R5]
              
              
              ADD            R8,R0,R2
              SUB            R9,R0,R2
              RSB            R10,R3,R1,ASR #1
              ADD            R11,R1,R3,ASR #1
              
              ADD            R0,R8,R11
              ADD            R1,R9,R10
              SUB            R2,R9,R10
              SUB            R3,R8,R11
              
              STRH           R0,[R6],#16
              STRH           R1,[R6],#16
              STRH           R2,[R6],#16
              STRH           R3,[R6]
              
              ADD            R12,R12,#4
              ADD            R13,R13,#4
              MOV            R5,R12
              MOV            R6,R13
              ADD            R7,R7,#1
              CMP            R7,#num
              BLT            Vertical
              
STOP          MOV            R0,#0x18
              LDR            R1,=0x20026
              SWI            0x123456
                                        
              AREA           Array,DATA,READWRITE
              
data          DCD            192,68,68,-56,14,34,38,12,64,-52,-4,-96,42,62,14,16

horizontal    DCD            0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

vertical      DCD            0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

              END

⌨️ 快捷键说明

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