新聞中心

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

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

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

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

雜類Load/Store指令的解碼格式如圖4.23所示。

圖4.23 雜類Load/Store指令解碼格式

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

表4.5 雜類Load/Store指令編碼格式各標(biāo)志位含義

位 標(biāo) 識

取 值

含 義

P

P=0

使用后索引尋址

P=1

使用偏移地址或前索引尋址(由W位決定)

續(xù)表

位 標(biāo) 識

取 值

含 義

U

U=0

訪問的地址=基址寄存器的值-偏移量(offset)

U=1

訪問的地址=基址寄存器的值+偏移量(offset)

W

W=0

如果P=0,使用后索引尋址;P=1,指令不改變基址寄存器的值

W=1

如果P=0,未定義指令;如果P=1,將計算的內(nèi)存訪問地址回寫到基址寄存器

L

L=0

Store指令

L=1

Load指令

S

S=0

無符號半字內(nèi)存訪問

S=1

有符號半字內(nèi)存訪問

H

H=0

字節(jié)訪問

H=1

半字訪問

注意

當(dāng)S=0并且H=0時,并非無符號的字節(jié)內(nèi)存訪問指令。無符號的內(nèi)存訪問指令不使用該種尋址方式,詳見本章上一節(jié)。

當(dāng)S=1并且L=0時,并非是有符號的存儲指令,而是未定義指令。指令并未區(qū)分有符號和無符號的字節(jié)和半字存儲。

1.[Rn,#±offset_8>]

(1)編碼格式

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

圖4.24 雜項內(nèi)存訪問指令——立即數(shù)偏移尋址編碼格式

內(nèi)存訪問地址為基址寄存器Rn的值加(或減)立即數(shù)offset_8。

編程中,在訪問結(jié)構(gòu)體或記錄(record)類型的變量時,這些內(nèi)存的操作指令是十分有效的。另外,在子程序中,也常用這些指令訪問本地變量和堆棧。當(dāng)offset_8=0時,內(nèi)存訪問地址即基址寄存器Rn的值。

(2)

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

其中:

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

· offset_8>為8位立即數(shù),內(nèi)存訪問地址偏移量。

(3)操作偽代碼

offset_8 = (immedH 4) OR immedL

If U = = 1 then

Address = Rn + offset_8

Else

Address = Rn – offset_8

(4)說明

① 如果指令中沒有指定立即數(shù),使用[Rn>],編譯器按[Rn>,#0]形式編碼。

② 如果Rn被指定為程序計數(shù)器r15,其值為當(dāng)前指令地址加8。



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉