移位操作比乘法速度快。只要整數是 2n、(2n+1) 或 (2n*(2m +1)),都可以使用移位操作優化此整數常數的乘法運算。
整數是 2n。
原始程式碼 |
指令選擇 |
MOV R2, #0x4 ADD R1, R3, R4 SUB R6, R7, R8 MUL R0, R4, R2 |
MOV R0, R4, LSL #2 |
整數是 (2n +1)。
原始程式碼 |
指令選擇 |
MOV R2, #0x5 ADD R1, R3, R4 SUB R6, R7, R8 MUL R0, R2, R4 |
ADD R0, R4, R4, LSL #2 |
整數是 (2n*(2m +1))。
原始程式碼 |
指令選擇 |
MOV R2, #0x28 ADD R1, R3, R4 SUB R6, R7, R8 MUL R0, R4, R2 |
ADD R4, R4, R4, LSL #2; MOV R0, R4, LSL #3 |