###### tags: `組合語言` # 組合語言共筆 15 : Thumb Mode ## 簡介 Thumb Mode 是為了減少 ARM 指令所需使用的空間而存在的 ARM 指令需要 32 bit 來儲存,Thumb 則是只需要 16 bit 即可儲存。 ## 使用 Thumb Mode 要使用 Thumb 可以用之前講過的 [組合語言共筆 10 : Branch Instructions](/sj8a4jC3T9yNqwEPf1Lrmw) 只不過不是 `B` 或 `BL` 而是 `BX`、`BLX` ``` BX{<cond>} Rm - 如當前為 ARM Mode 會將模式改為 Thumb Mode,並跳到 Rm 的位置 指令會將 Rm[0] bit 取出放到 CPSR 的 T bit 中, 如 Rm[0] = 1 -> T=1,跳到 Thumb Mode 如 Rm[1] = 0 -> T=0,跳到 ARM Mode ``` ``` BLX{<cond>} Rm - 如當前為 ARM Mode 會將模式改為 Thumb Mode,並跳到 Rm 的位置 並且儲存 pc 到 lr,可以將這段看成要呼叫 Thumb Mode 的函數 ```