• 正文
    • 5.5  單數(shù)據(jù)交換指令
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

數(shù)據(jù)傳送指令之:?jiǎn)螖?shù)據(jù)交換指令

2013/09/13
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

?

5.5? 單數(shù)據(jù)交換指令

交換指令是load/store指令的一種特例,它把一個(gè)寄存器單元的內(nèi)容與寄存器內(nèi)容交換。交換指令是一個(gè)原子操作(atomic operation),也就是說,在連續(xù)的總線操作中讀/寫一個(gè)存儲(chǔ)單元,在操作期間阻止其他任何指令對(duì)該存儲(chǔ)單元的讀/寫。

交換指令如表5.4所示。

表5.4??? 交換指令SWP

指??? 令

作??? 用

操??? 作

SWP

字交換

Tmp=men32[Rn]

Mem32[Rn]=Rm

Rd=tmp

續(xù)表

指??? 令

作??? 用

操??? 作

SWPB

字節(jié)交換

Tmp=men8[Rn]

Mem8[Rn]=Rm

Rd=tmp

注意

交換指令在執(zhí)行期間不能被其他任何指令或其他任何總線訪問打斷,在此期間系統(tǒng)占用總線(holds the bus),直至交換完成。

5.5.1? 字交換指令SWP

(1)指令編碼格式

SWP指令用于將內(nèi)存中的一個(gè)字單元和一個(gè)指定寄存器的值相交換。操作過程如下,假設(shè)內(nèi)存單元地址存放在寄存器<Rn>中,指令將<Rn>中的數(shù)據(jù)讀取到目的寄存器Rd中,同時(shí)將另一個(gè)寄存器<Rm>的內(nèi)容寫入到該內(nèi)存單元中。當(dāng)<Rd>和<Rm>為同一個(gè)寄存器時(shí),指令交換該寄存器和內(nèi)存單元的內(nèi)容。

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

圖5.20? SWP指令編碼格式

(2)指令的語法格式

SWP{<cond>}? <Rd>,<Rm>,[<Rn>]

① <cond>

為指令編碼中的條件域。它指示SWP指令在什么條件下執(zhí)行。當(dāng)<cond>忽略時(shí),指令為無條件執(zhí)行(cond=AL(Alway))。

② <Rd>

目標(biāo)寄存器。

③ <Rm>

寄存器包含將要存儲(chǔ)到內(nèi)存中的數(shù)據(jù)。

④ <Rn>

寄存器中包含將要訪問的內(nèi)存地址。

(3)指令操作的偽代碼

指令操作偽代碼如下面程序段所示。

If? ConditionPassed{cond}? then

???? If? Rn[1:0]==0b00? then

??????????? Temp=memory[Rn,4]

???? Else? if? Rn[1:0]==0b01? then

??????????? Temp=memory[Rn,4]? Rotate_right 8

???? Else? if? Rn[1:0]==0b10? then

??????????? Temp=memory[Rn,4]? Rotate_right 16

???? Else? /*? Rn[1:0]==0b11? */

??????????? Temp=memory[Rn,4]? Rotate_right 24

???? Memory[Rn,4]=Rm

???? Rd=temp

?

5.5.2? 字節(jié)交換指令SWPB

(1)指令編碼格式

SWPB指令用于將內(nèi)存中的一個(gè)字節(jié)單元和一個(gè)指定寄存器的低8位值相交換,操作過程如下。假設(shè)內(nèi)存單元地址存放在寄存器<Rn>中,指令將<Rn>中的數(shù)據(jù)讀取到目的寄存器Rd中,寄存器Rd的高24位設(shè)為0,同時(shí)將另一個(gè)寄存器<Rm>的低8位內(nèi)容寫入到該內(nèi)存字節(jié)單元中。當(dāng)<Rd>和<Rm>為同一個(gè)寄存器時(shí),指令交換該寄存器低8位內(nèi)容和內(nèi)存字節(jié)單元的內(nèi)容。

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

圖5.21? SWPB指令編碼格式

(2)指令的語法格式

SWP{<cond>}B? <Rd>,<Rm>,[<Rn>]

① <cond>

為指令編碼中的條件域。它指示SWPB指令在什么條件下執(zhí)行。當(dāng)<cond>忽略時(shí),指令為無條件執(zhí)行(cond=AL(Alway))。

② <Rd>

目標(biāo)寄存器。

③ <Rm>

寄存器包含將要存儲(chǔ)到內(nèi)存中的數(shù)據(jù)。

④ <Rn>

寄存器中包含將要訪問的內(nèi)存地址。

(3)指令操作的偽代碼

指令操作偽代碼如下面程序段所示。

If? ConditionPassed{cond}? then

???? Temp=Memory[Rn,1]

???? Memory[Rn,1]=Rm[7:0]

???? Rd=temp

5.5.3? 交換指令SWP應(yīng)用

寄存器和存儲(chǔ)器交換指令SWP指令用于將一個(gè)內(nèi)存單元(該單元地址放在寄存器Rn中)的內(nèi)容讀取到一個(gè)寄存器Rd中,同時(shí)將另一個(gè)寄存器Rm的內(nèi)容寫到該內(nèi)存單元中,使用SWP可實(shí)現(xiàn)信號(hào)量操作。

格式如下。

SWP{cond}B? Rd,Rm,[Rn]

其中,B為可選后綴,若有B,則交換字節(jié),否則交換32位字。Rd為目的寄存器,存儲(chǔ)從存儲(chǔ)器中加載的數(shù)據(jù),同時(shí),Rm中的數(shù)據(jù)將會(huì)被存儲(chǔ)到存儲(chǔ)器中。若Rm與Rn相同,則為寄存器與存儲(chǔ)器內(nèi)容進(jìn)行交換。Rn為要進(jìn)行數(shù)據(jù)交換的存儲(chǔ)器地址,Rn不能與Rd和Rm相同。

【例5.6】SWP指令舉例。

SWP? r1,r1,[r0]???????? ;將r1的內(nèi)容與r0指向的存儲(chǔ)單元內(nèi)容進(jìn)行交換

SWPB? r1,r2,[r0]??????? ;將r0指向的存儲(chǔ)單元內(nèi)容讀取一字節(jié)數(shù)據(jù)到r1中(高24位清零),

????????????????????? ?并將r2的內(nèi)容寫入到該內(nèi)存單元中(最低字節(jié)有效)

使用SWP指令可以方便地進(jìn)行信號(hào)量操作。

12C_SEM????? EQU???? 0x40003000

???????????? ……

12C_SEM_WAIT

????????? MOV????? r0,#0

????????? LDR????? r0,=12C_SEM

????????? SWP????? r1,r1,[r0]??????? ;取出信號(hào)量,并將其設(shè)為0

????????? CMP????? r1,#0???????????? ;判斷是否有信號(hào)

????????? BEQ????? 12C_SEM_WAIT?????? ;若沒有信號(hào)則等待

Arm

Arm

ARM公司是一家知識(shí)產(chǎn)權(quán)(IP)供應(yīng)商,主要為國(guó)際上其他的電子公司提供高性能RISC處理器、外設(shè)和系統(tǒng)芯片技術(shù)授權(quán)。目前,ARM公司的處理器內(nèi)核已經(jīng)成為便攜通訊、手持計(jì)算設(shè)備、多媒體數(shù)字消費(fèi)品等方案的RISC標(biāo)準(zhǔn)。公司1990年11月由Acorn、Apple和VLSI合并而成。

ARM公司是一家知識(shí)產(chǎn)權(quán)(IP)供應(yīng)商,主要為國(guó)際上其他的電子公司提供高性能RISC處理器、外設(shè)和系統(tǒng)芯片技術(shù)授權(quán)。目前,ARM公司的處理器內(nèi)核已經(jīng)成為便攜通訊、手持計(jì)算設(shè)備、多媒體數(shù)字消費(fèi)品等方案的RISC標(biāo)準(zhǔn)。公司1990年11月由Acorn、Apple和VLSI合并而成。收起

查看更多

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計(jì)資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

華清遠(yuǎn)見(www.farsight.com.cn)是國(guó)內(nèi)領(lǐng)先嵌入師培訓(xùn)機(jī)構(gòu),2004年注冊(cè)于中國(guó)北京海淀高科技園區(qū),除北京總部外,上海、深圳、成都、南京、武漢、西安、廣州均有直營(yíng)分公司。華清遠(yuǎn)見除提供嵌入式相關(guān)的長(zhǎng)期就業(yè)培訓(xùn)、短期高端培訓(xùn)、師資培訓(xùn)及企業(yè)員工內(nèi)訓(xùn)等業(yè)務(wù)外,其下屬研發(fā)中心還負(fù)責(zé)嵌入式、Android及物聯(lián)網(wǎng)方向的教學(xué)實(shí)驗(yàn)平臺(tái)的研發(fā)及培訓(xùn)教材的出版,截止目前為止已公開出版70余本嵌入式/移動(dòng)開發(fā)/物聯(lián)網(wǎng)相關(guān)圖書。企業(yè)理念:專業(yè)始于專注 卓識(shí)源于遠(yuǎn)見。企業(yè)價(jià)值觀:做良心教育、做專業(yè)教育,更要做受人尊敬的職業(yè)教育。