新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 數(shù)據(jù)傳送指令之:單數(shù)據(jù)交換指令

        數(shù)據(jù)傳送指令之:單數(shù)據(jù)交換指令

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

        本文引用地址:http://www.104case.com/article/257078.htm

        5.5

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


        上一頁 1 2 下一頁

        評論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 泸溪县| 阿鲁科尔沁旗| 南靖县| 花垣县| 类乌齐县| 宽城| 英吉沙县| 水富县| 太康县| 宁远县| 方山县| 永春县| 南阳市| 江达县| 什邡市| 彭阳县| 曲水县| 丘北县| 岐山县| 抚顺市| 呼图壁县| 额济纳旗| 敖汉旗| 嵊泗县| 商丘市| 宁安市| 江城| 榆社县| 鄂伦春自治旗| 南宁市| 中西区| 治县。| 囊谦县| 莱阳市| 南皮县| 白山市| 武穴市| 富顺县| 万宁市| 蒲江县| 电白县|