新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM指令尋址方式之: 內(nèi)存訪問(wèn)指令尋址

ARM指令尋址方式之: 內(nèi)存訪問(wèn)指令尋址

作者: 時(shí)間:2013-09-13 來(lái)源:網(wǎng)絡(luò) 收藏

本文引用地址:http://butianyuan.cn/article/257083.htm

6.[Rn],±Rm>

(1)編碼格式

指令的編碼格式如圖4.29所示。

圖4.29 雜項(xiàng)內(nèi)存訪問(wèn)指令——后索引寄存器偏移尋址編碼格式

指令訪問(wèn)地址為實(shí)際的基址寄存器的值。當(dāng)指令的執(zhí)行條件滿(mǎn)足時(shí),將基址寄存器的值加/減索引寄存器Rm的值回寫(xiě)到Rn基址寄存器。

(2)

LDR|STR{cond>}H|SH|SB|D Rd>,[Rn],±Rm>

其中:

· Rn為基址寄存器,該寄存器包含內(nèi)存訪問(wèn)的基地址;

· Rm>為偏移地址寄存器,包含內(nèi)存訪問(wèn)地址偏移量。

(3)操作偽代碼

Address = Rn

If conditionPassed{cond} then

If U = = 1 then

Rn = Rn + Rm

Else

Rn = Rn – Rm

(4)說(shuō)明

① 程序寄存器r15被指定為Rm或Rn,指令的執(zhí)行結(jié)果不可預(yù)知。

② 如果Rm和Rn指定為同一寄存器,指令的執(zhí)行結(jié)果不可預(yù)知。

4.2.3 批量Load/Store方式

批量Load/Store指令將一片連續(xù)內(nèi)存單元的數(shù)據(jù)加載到通用寄存器組中或?qū)⒁唤M通用寄存器的數(shù)據(jù)存儲(chǔ)到內(nèi)存單元中。

批量Load/Store指令的尋址模式產(chǎn)生一個(gè)內(nèi)存單元的地址范圍,指令寄存器和內(nèi)存單元的對(duì)應(yīng)關(guān)系滿(mǎn)足這樣的規(guī)則,即編號(hào)低的寄存器對(duì)應(yīng)于內(nèi)存中低地址單元,編號(hào)高的寄存器對(duì)應(yīng)于內(nèi)存中的高地址單元。

指令的如下。

LDM|STM{cond>}addressing_mode> Rn>{!},registers>^>

指令的尋址方式如表4.6所示。

表4.6 批量Load/Store指令的尋址方式

格 式

模 式

1

IA(Increment After)

后遞增方式

2

IB(Increment Before)

先遞增方式

3

DA(Decrement After)

后遞減方式

4

DB(Decrement Before)

先遞減方式

指令的編碼格式如圖4.30所示。

圖4.30 批量Load/Store指令編碼格式

編碼格式中各標(biāo)志位的含義如表4.7所示。

表4.7 批量Load/Store指令編碼格式各標(biāo)志位含義

位標(biāo)識(shí)

取 值

含 義

P

P=0

Rn包含的地址,是所要訪問(wèn)的內(nèi)存塊的高地址(U=0)還是低地址(U=1)

P=1

標(biāo)識(shí)Rn所指向的內(nèi)存單元是否被訪問(wèn)

U

U=0

Rn所指內(nèi)存單元為所要訪問(wèn)的內(nèi)存單元塊的高地址

U=1

Rn所指內(nèi)存單元為所要訪問(wèn)的內(nèi)存單元塊的低地址

S

S=0

當(dāng)程序計(jì)數(shù)器PC作為要加載的寄存器之一時(shí),S標(biāo)識(shí)是否將spsr內(nèi)容拷貝到cpsr;對(duì)于不加載PC的load指令和所有store指令,S標(biāo)識(shí)特權(quán)模式下,使用用戶(hù)模式寄存器組代替當(dāng)前模式下寄存器組

S=1

W

W=0

數(shù)據(jù)傳送完畢,更新地址寄存器內(nèi)容

W=1

L

L=0

Store指令

L=1

Load指令



評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉