ARM指令尋址方式之: 內存訪(fǎng)問(wèn)指令尋址
(2)語(yǔ)法格式
opcode>{cond>}{L} coproc>,CRd>,[Rn>],#±offset_8>*4
其中:
· Rn>為基址寄存器,包含尋址操作的基地址;
· offset_8>為8位立即數,該值的4倍為地址偏移量。
(3)操作偽代碼
If ConditionPassed(cond) then
Start_address = Rn
If U = = 1 then
Rn = Rn + offset_8 * 4
Else /*U = = 0*/
Rn = Rn – offset_8 * 4
Address = start_address
While (NotFinished(coprocessor[cp_num]))
Address = address +4
End_address = address
(4)說(shuō)明
如果基址寄存器指定為程序計數器r15,則指令的執行結果不可預知。
4.[Rn>], Option>
(1)編碼格式
指令的編碼格式如圖4.39所示。
圖4.39 協(xié)處理器Load/Store指令——直接尋址
該尋址方式指定一片連續的內存地址空間。訪(fǎng)問(wèn)內存單元的第一個(gè)地址first_addressing>等于基址寄存器Rn>的值。接下來(lái)的內存訪(fǎng)問(wèn)地址是前一個(gè)訪(fǎng)問(wèn)地址加4。當協(xié)處理器發(fā)出傳輸中止信號時(shí),數據傳送結束。
指令不更新基址寄存器的值。指令編碼格式中bits[7:0]保留,所以可以將空閑位用作協(xié)處理器指令擴展。
這種尋址方式的數據傳輸數目由協(xié)處理器決定,最多可以傳輸16字。
(2)語(yǔ)法格式
opcode>{cond>}{L} coproc>,CRd>,[Rn>],Option>
其中:
· Rn>為基址寄存器,包含尋址操作的基地址;
· option>用作協(xié)處理器指令擴展。
(3)操作偽代碼
If ConditionPassed(cond) then
Start_address = Rn
Address = start_address
While (NotFinished(coprocessor[cp_num]))
Address = address +4
End_address = address
(4)說(shuō)明
如果基址寄存器指定為程序計數器r15,則尋址基地址為當前指令地址加8。
評論