新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 數據傳送指令之:單數據交換指令

        數據傳送指令之:單數據交換指令

        作者: 時間:2013-09-13 來源:網絡 收藏

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

        5.5

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

        交換指令如表5.4所示。

        表5.4 交換指令SWP

        指 令

        作 用

        操 作

        SWP

        字交換

        Tmp=men32[Rn]

        Mem32[Rn]=Rm

        Rd=tmp

        續表

        指 令

        作 用

        操 作

        SWPB

        字節交換

        Tmp=men8[Rn]

        Mem8[Rn]=Rm

        Rd=tmp

        注意

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

        5.5.1 字交換指令SWP

        (1)指令編碼格式

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

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

        圖5.20 SWP指令編碼格式

        (2)指令的語法格式

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

        ① cond>

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

        ② Rd>

        目標寄存器。

        ③ Rm>

        寄存器包含將要存儲到內存中的數據。

        ④ Rn>

        寄存器中包含將要訪問的內存地址。

        (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 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 罗甸县| 郁南县| 慈利县| 札达县| 新津县| 绥宁县| 江北区| 额尔古纳市| 文山县| 延吉市| 易门县| 垣曲县| 临沂市| 尼勒克县| 太康县| 资中县| 浠水县| 台北县| 太仆寺旗| 东至县| 吉安县| 枣阳市| 张北县| 陈巴尔虎旗| 临武县| 石狮市| 阿拉善左旗| 庆元县| 彰化市| 祁门县| 安平县| 荔波县| 鞍山市| 监利县| 博白县| 宽城| 海门市| 永寿县| 含山县| 抚松县| 建平县|