ARM指令尋址方式之: 內(nèi)存訪問指令尋址
表4.8顯示了堆棧的尋址方式和批量Load/Store指令尋址方式的對應(yīng)關(guān)系。
表4.8 堆棧尋址方式和批量Load/Store指令尋址方式對應(yīng)關(guān)系
批量數(shù)據(jù)尋址方式 | 堆棧尋址方式 | L位 | P位 | U位 |
LDMDA | LDMFA | 1 | 0 | 0 |
LDMIA | LDMFD | 1 | 0 | 1 |
LDMDB | LDMEA | 1 | 1 | 0 |
LDMIB | LDMED | 1 | 1 | 1 |
STMDA | STMED | 0 | 0 | 0 |
STMIA | STMEA | 0 | 0 | 1 |
STMDB | STMFD | 0 | 1 | 0 |
STMIB | STMFA | 0 | 1 | 1 |
4.2.5 協(xié)處理器Load/Store尋址方式
協(xié)處理器Load/Store指令的語法格式如下。
opcode>{cond>}{L} coproc>,CRd>,addressing_mode>
表4.9顯示了該類指令的尋址方式。
表4.9 協(xié)處理器Load/Store指令尋址方式
格 式 | 說 明 | |
1 | [Rn>,#±offset_8>*4] | 立即數(shù)偏移尋址 |
2 | [Rn>,#±offset_8>*4]! | 前索引立即數(shù)偏移尋址 |
3 | [Rn>],#±offset_8>*4 | 后索引立即數(shù)偏移尋址 |
4 | [Rn>], option> | 直接尋址 |
協(xié)處理器Load/Store指令的編碼方式如圖4.35所示。
編碼格式中各標(biāo)志位的含義如表4.10所示。
圖4.35 協(xié)處理器Load/Store指令編碼格式
表4.10 協(xié)處理器Load/Store指令編碼格式各標(biāo)志位含義
位 標(biāo) 識 | 取 值 | 含 義 |
P | P=0 | 標(biāo)識使用偏移尋址還是前索引尋址(由W位決定) |
P=1 | 標(biāo)識使用后索引尋址還是直接尋址(由W位決定) | |
U | U=0 | 從基地址中減去偏移量offset |
U=1 | 從基地址中加上偏移量offset | |
N | N=0 | 和具體使用的協(xié)處理器相關(guān) |
N=1 | ||
W | W=0 | 指令執(zhí)行結(jié)束,不改變基址寄存器的值 |
W=1 | 訪問的內(nèi)存地址回寫到基址寄存器 | |
L | L=0 | Store指令 |
L=1 | Load指令 |
1.[Rn>,#±offset_8>*4]
(1)編碼格式
指令的編碼格式如圖4.36所示。
圖4.36 協(xié)處理器Load/Store指令——立即數(shù)尋址
該尋址方式指定一片連續(xù)的內(nèi)存地址空間。訪問內(nèi)存單元的第一個(gè)地址first_addressing>等于基址寄存器Rn>的值加上/減去指令中寄存器值的4倍。接下來的內(nèi)存訪問地址是前一個(gè)訪問地址加4。當(dāng)協(xié)處理器發(fā)出傳輸中止信號時(shí),數(shù)據(jù)傳送結(jié)束。
這種尋址方式的數(shù)據(jù)傳輸數(shù)目由協(xié)處理器決定。
注意 | 這種尋址方式最多允許傳輸16的字。 |
評論