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

📄 imdct_l_arm.s

📁 一个嵌入式Linux上的mp3播放器
💻 S
📖 第 1 页 / 共 3 页
字号:
    ldr     r12, =WL5                   @ r12 = window_l[5]    movs    r10, r10, lsr #28    adc     r5, r10, lr, lsl #4         @ r5 = bits[59..28] of windowed x4    smull   r10, lr, r12, r6            @ r10..lr = (window_l[5] * x[5])    ldr     r12, =WL6                   @ r12 = window_l[6]    movs    r10, r10, lsr #28    adc     r6, r10, lr, lsl #4         @ r6 = bits[59..28] of windowed x5    smull   r10, lr, r12, r7            @ r10..lr = (window_l[6] * x[6])    ldr     r12, =WL7                   @ r12 = window_l[7]    movs    r10, r10, lsr #28    adc     r7, r10, lr, lsl #4         @ r7 = bits[59..28] of windowed x6    smull   r10, lr, r12, r8            @ r10..lr = (window_l[7] * x[7])    ldr     r12, =WL8                   @ r12 = window_l[8]    movs    r10, r10, lsr #28    adc     r8, r10, lr, lsl #4         @ r8 = bits[59..28] of windowed x7    smull   r10, lr, r12, r9            @ r10..lr = (window_l[8] * x[8])    movs    r10, r10, lsr #28    adc     r9, r10, lr, lsl #4         @ r9 = bits[59..28] of windowed x8    stmia   r1, { r0, r2 - r9 }         @ store windowed x[0] .. x[8]    cmp     r11, #BLOCK_MODE_START    beq     start_block_x18_to_x35    @----normal_block_x18_to_x35:    ldr     r11, =WL3                   @ r11 = window_l[3]    ldr     r12, =WL4                   @ r12 = window_l[4]    add     r1, r1, #(18*4)             @ r1 = &x[18]    ldmia   r1!, { r0, r2 - r4, r6 - r10 }  @ load 9 words from x18, update pointer    @ r0     = x18    @ r1     = &x[27]    @ r2     = x19    @ r3     = x20    @ r4     = x21    @ r5     = .    @ r6     = x22    @ r7     = x23    @ r8     = x24    @ r9     = x25    @ r10    = x26    @ r11    = window_l[3]    @ r12    = window_l[4]    @ lr     = .    smull   r5, lr, r12, r6             @ r5..lr = (window_l[4] * (x[22] == x[31]))    movs    r5, r5, lsr #28    adc     r5, r5, lr, lsl #4          @ r5 = bits[59..28] of windowed x31    smull   r6, lr, r11, r4             @ r5..lr = (window_l[3] * (x[21] == x[32]))    ldr     r12, =WL5                   @ r12    =  window_l[5]    movs    r6, r6, lsr #28    adc     r6, r6, lr, lsl #4          @ r6 = bits[59..28] of windowed x32    smull   r4, lr, r12, r7             @ r4..lr = (window_l[5] * (x[23] == x[30]))    ldr     r11, =WL1                   @ r11    =  window_l[1]    ldr     r12, =WL2                   @ r12    =  window_l[2]    movs    r4, r4, lsr #28    adc     r4, r4, lr, lsl #4          @ r4 = bits[59..28] of windowed x30    smull   r7, lr, r12, r3             @ r7..lr = (window_l[2] * (x[20] == x[33]))    ldr     r12, =WL6                   @ r12 = window_l[6]    movs    r7, r7, lsr #28    adc     r7, r7, lr, lsl #4          @ r7 = bits[59..28] of windowed x33    smull   r3, lr, r12, r8             @ r3..lr = (window_l[6] * (x[24] == x[29]))    movs    r3, r3, lsr #28    adc     r3, r3, lr, lsl #4          @ r3 = bits[59..28] of windowed x29    smull   r8, lr, r11, r2             @ r7..lr = (window_l[1] * (x[19] == x[34]))    ldr     r12, =WL7                   @ r12    =  window_l[7]    ldr     r11, =WL8                   @ r11    =  window_l[8]    movs    r8, r8, lsr #28    adc     r8, r8, lr, lsl #4          @ r8 = bits[59..28] of windowed x34    smull   r2, lr, r12, r9             @ r7..lr = (window_l[7] * (x[25] == x[28]))    ldr     r12, =WL0                   @ r12 = window_l[0]    movs    r2, r2, lsr #28    adc     r2, r2, lr, lsl #4          @ r2 = bits[59..28] of windowed x28    smull   r9, lr, r12, r0             @ r3..lr = (window_l[0] * (x[18] == x[35]))    movs    r9, r9, lsr #28    adc     r9, r9, lr, lsl #4          @ r9 = bits[59..28] of windowed x35    smull   r0, lr, r11, r10            @ r7..lr = (window_l[8] * (x[26] == x[27]))    ldr     r11, =WL16                  @ r11    =  window_l[16]    ldr     r12, =WL17                  @ r12    =  window_l[17]    movs    r0, r0, lsr #28    adc     r0, r0, lr, lsl #4          @ r0 = bits[59..28] of windowed x27    stmia   r1,  { r0, r2 - r9 }        @ store windowed x[27] .. x[35]    ldmdb   r1!, { r0, r2 - r9 }        @ load 9 words downto (and including) x18    smull   r10, lr, r12, r0            @ r10..lr = (window_l[17] * x[18])    movs    r10, r10, lsr #28    adc     r0,  r10, lr, lsl #4        @ r0 = bits[59..28] of windowed x0    smull   r10, lr, r11, r2            @ r10..lr = (window_l[16] * x[19])    ldr     r11, =WL14                  @ r11     =  window_l[14]    ldr     r12, =WL15                  @ r12     =  window_l[15]    movs    r10, r10, lsr #28    adc     r2,  r10, lr, lsl #4        @ r2 = bits[59..28] of windowed x1    smull   r10, lr, r12, r3            @ r10..lr = (window_l[15] * x[20])    movs    r10, r10, lsr #28    adc     r3,  r10, lr, lsl #4        @ r3 = bits[59..28] of windowed x2    smull   r10, lr, r11, r4            @ r10..lr = (window_l[14] * x[21])    ldr     r11, =WL12                  @ r11     =  window_l[12]    ldr     r12, =WL13                  @ r12     =  window_l[13]    movs    r10, r10, lsr #28    adc     r4,  r10, lr, lsl #4        @ r4 = bits[59..28] of windowed x3    smull   r10, lr, r12, r5            @ r10..lr = (window_l[13] * x[22])    movs    r10, r10, lsr #28    adc     r5,  r10, lr, lsl #4        @ r5 = bits[59..28] of windowed x4    smull   r10, lr, r11, r6            @ r10..lr = (window_l[12] * x[23])    ldr     r11, =WL10                  @ r12 = window_l[10]    ldr     r12, =WL11                  @ r12 = window_l[11]    movs    r10, r10, lsr #28    adc     r6,  r10, lr, lsl #4        @ r6 = bits[59..28] of windowed x5    smull   r10, lr, r12, r7            @ r10..lr = (window_l[11] * x[24])    movs    r10, r10, lsr #28    adc     r7,  r10, lr, lsl #4        @ r7 = bits[59..28] of windowed x6    smull   r10, lr, r11, r8            @ r10..lr = (window_l[10] * x[25])    ldr     r12, =WL9                   @ r12 = window_l[9]    movs    r10, r10, lsr #28    adc     r8,  r10, lr, lsl #4        @ r8 = bits[59..28] of windowed x7    smull   r10, lr, r12, r9            @ r10..lr = (window_l[9] * x[26])    movs    r10, r10, lsr #28    adc     r9,  r10, lr, lsl #4        @ r9 = bits[59..28] of windowed x8    stmia   r1, { r0, r2 - r9 }         @ store windowed x[18] .. x[26]    @----    @ NB there are 2 possible exits from this function - this is only one of them    @----    add     sp, sp, #(21*4)             @ return stack frame    ldmia   sp!, { r4 - r11, pc }       @ restore callee saved regs, and return    @----stop_block_x0_to_x17:    @ r0     =  x0    @ r1     = &x[9]    @ r2     =  x1    @ r3     =  x2    @ r4     =  x3    @ r5     =  x4    @ r6     =  x5    @ r7     =  x6    @ r8     =  x7    @ r9     =  x8    @ r10    = -x0    @ r11    =  window mode: (0 == normal), (1 == start block), (3 == stop block)    @ r12    =  .    @ lr     =  .    rsb     r0, r6, #0                  @ r0 = -x5    rsb     r6, r2, #0                  @ r6 = -x1    rsb     r2, r5, #0                  @ r2 = -x4    rsb     r5, r3, #0                  @ r5 = -x2    rsb     r3, r4, #0                  @ r3 = -x3    add     r1, r1, #(3*4)                      @ r1 = &x[12]    stmia   r1, { r0, r2, r3, r5, r6, r10 }     @ store unchanged x[12] .. x[17]    ldr     r0, =WL1                    @ r0 = window_l[1]  == window_s[0]    rsb     r10, r9, #0                 @ r10 = -x8    rsb     r12, r8, #0                 @ r12 = -x7    rsb     lr,  r7, #0                 @ lr  = -x6    @ r0     =  WL1    @ r1     = &x[12]    @ r2     =  .    @ r3     =  .    @ r4     =  .    @ r5     =  .    @ r6     =  .    @ r7     =  x6    @ r8     =  x7    @ r9     =  x8    @ r10    = -x8    @ r11    =  window mode: (0 == normal), (1 == start block), (3 == stop block)    @ r12    = -x7    @ lr     = -x6    smull   r5, r6, r0, r7              @ r5..r6 = (window_l[1] * x[6])    ldr     r2, =WL4                    @ r2     =  window_l[4] == window_s[1]    movs    r5, r5, lsr #28    adc     r7, r5, r6, lsl #4          @ r7 = bits[59..28] of windowed x6    smull   r5, r6, r2, r8              @ r5..r6 = (window_l[4] * x[7])    ldr     r3, =WL7                    @ r3     =  window_l[7] == window_s[2]    movs    r5, r5, lsr #28    adc     r8, r5, r6, lsl #4          @ r8 = bits[59..28] of windowed x7    smull   r5, r6, r3, r9              @ r5..r6 = (window_l[7] * x[8])    ldr     r4, =WL10                   @ r4     =  window_l[10] == window_s[3]    movs    r5, r5, lsr #28    adc     r9, r5, r6, lsl #4          @ r9 = bits[59..28] of windowed x8    smull   r5, r6, r4, r10             @ r5..r6 = (window_l[10] * (x[9] == -x[8]))    ldr     r0, =WL13                   @ r0     =  window_l[13] == window_s[4]    movs    r5, r5, lsr #28    adc     r10, r5, r6, lsl #4         @ r10 = bits[59..28] of windowed x9    smull   r5, r6, r0, r12             @ r5..r6 = (window_l[13] * (x[10] == -x[7]))    ldr     r2, =WL16                   @ r2     =  window_l[16] == window_s[5]    movs    r5, r5, lsr #28    adc     r12, r5, r6, lsl #4         @ r10 = bits[59..28] of windowed x9    smull   r5, r6, r2, lr              @ r5..r6 = (window_l[16] * (x[11] == -x[6]))    ldr     r0, =0x00    movs    r5, r5, lsr #28    adc     lr, r5, r6, lsl #4          @ r10 = bits[59..28] of windowed x9    stmdb   r1!, { r7 - r10, r12, lr }  @ store windowed x[6] .. x[11]    ldr     r5, =0x00    ldr     r6, =0x00    ldr     r2, =0x00    ldr     r3, =0x00    ldr     r4, =0x00    stmdb   r1!, { r0, r2 - r6 }        @ store windowed x[0] .. x[5]    b       normal_block_x18_to_x35    @----start_block_x18_to_x35:    ldr     r4, =WL1                    @ r0 = window_l[1]  == window_s[0]    add     r1, r1, #(24*4)             @ r1 = &x[24]    ldmia   r1, { r0, r2, r3 }          @ load 3 words from x24, dont update pointer    @ r0     = x24    @ r1     = &x[24]    @ r2     = x25    @ r3     = x26    @ r4     = WL1    @ r5     = WL4    @ r6     = WL7    @ r7     = WL10    @ r8     = WL13    @ r9     = WL16    @ r10    = .    @ r11    = .    @ r12    = .    @ lr     = .    ldr     r5, =WL4                    @ r5 = window_l[4] == window_s[1]    smull   r10, r11, r4, r0            @ r10..r11 = (window_l[1] * (x[24] == x[29]))    ldr     r6, =WL7                    @ r6       =  window_l[7]  == window_s[2]    movs    r10, r10, lsr #28    adc     lr, r10, r11, lsl #4        @ lr = bits[59..28] of windowed x29    smull   r10, r11, r5, r2            @ r10..r11 = (window_l[4] * (x[25] == x[28]))    ldr     r7, =WL10                   @ r7       =  window_l[10] == window_s[3]    movs    r10, r10, lsr #28    adc     r12, r10, r11, lsl #4       @ r12 = bits[59..28] of windowed x28    smull   r10, r11, r6, r3            @ r10..r11 = (window_l[7] * (x[26] == x[27]))    ldr     r8, =WL13                   @ r8       =  window_l[13] == window_s[4]    movs    r10, r10, lsr #28    adc     r4, r10, r11, lsl #4        @ r4 = bits[59..28] of windowed x27    smull   r10, r11, r7, r3            @ r10..r11 = (window_l[10] * x[26])    ldr     r9, =WL16                   @ r9       =  window_l[16] == window_s[5]    movs    r10, r10, lsr #28    adc     r3, r10, r11, lsl #4        @ r3 = bits[59..28] of windowed x26    smull   r10, r11, r8, r2            @ r10..r11 = (window_l[13] * x[25])    ldr     r5, =0x00    movs    r10, r10, lsr #28    adc     r2, r10, r11, lsl #4        @ r2 = bits[59..28] of windowed x25    smull   r10, r11, r9, r0            @ r10..r11 = (window_l[16] * x[24])    ldr     r6, =0x00    movs    r10, r10, lsr #28    adc     r0, r10, r11, lsl #4        @ r0 = bits[59..28] of windowed x24    stmia   r1!, { r0, r2, r3, r4, r12, lr }    @ store windowed x[24] .. x[29]    ldr     r7, =0x00    ldr     r8, =0x00    ldr     r9, =0x00    ldr     r10, =0x00    stmia   r1!, { r5 - r10 }           @ store windowed x[30] .. x[35]    @----    @ NB there are 2 possible exits from this function - this is only one of them    @----    add     sp, sp, #(21*4)             @ return stack frame    ldmia   sp!, { r4 - r11, pc }       @ restore callee saved regs, and return    @----    @END    @----

⌨️ 快捷键说明

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