Try   HackMD
tags: 組合語言

組合語言共筆 15 : Thumb Mode

簡介

Thumb Mode 是為了減少 ARM 指令所需使用的空間而存在的
ARM 指令需要 32 bit 來儲存,Thumb 則是只需要 16 bit 即可儲存。

使用 Thumb Mode

要使用 Thumb 可以用之前講過的 組合語言共筆 10 : Branch Instructions
只不過不是 BBL 而是 BXBLX

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 的函數