新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 協處理器及其他指令之:交換指令

        協處理器及其他指令之:交換指令

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

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

        9.4

        是load/Store指令的一種特殊形式。該指令將一個存儲器單元內容與指定的寄存器內容相交換。為進程間同步提供了一種方便的解決途徑。該指令產生一對原子Load/Store操作(an atomic load and store operation),該操作發生在一個連續的總線操作中,在操作期間阻止其他任何指令對該存儲單元的讀/寫。

        表9.3總結了的交換指令。

        表9.3 交換指令

        助 記 符

        含 義

        操 作

        SWP

        寄存器和存儲器字數據交換

        Rd←[Rd],[Rn]←[Rm](Rn≠Rd或Rm)

        SWPB

        寄存器和存儲器字節數據交換

        Rd←[Rd],[Rn]←[Rm](Rn≠Rd或Rm)

        9.4.1 寄存器和存儲器字數據交換指令SWP

        1.指令編碼格式

        寄存器和存儲器字交換指令SWP(Swap)用于將一個內存單元(該單元地址放在寄存器Rn中)的內容讀取到一個寄存器Rd中,同時將另一個寄存器Rm的內容寫入到該內存單元中。

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

        圖9.10 SWP指令編碼格式

        2.指令的語法格式

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

        ① cond>

        為指令編碼中的條件域。它指示指令在什么條件下執行。當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]==0b01 then */

        Temp= memory[Rn,4] Rotate_Right 24

        Memory[Rn,4]=Rm

        Rd=temp


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 昂仁县| 宜宾县| 堆龙德庆县| 新营市| 三河市| 团风县| 前郭尔| 康平县| 修武县| 略阳县| 城市| 财经| 肇东市| 台山市| 南岸区| 麻城市| 淮滨县| 象山县| 沁源县| 阿勒泰市| 民乐县| 旅游| 湘乡市| 佳木斯市| 科尔| 垫江县| 洮南市| 富平县| 介休市| 永福县| 乌拉特后旗| 鄂温| 肇州县| 鹤峰县| 新源县| 伊川县| 清镇市| 洱源县| 邢台县| 中阳县| 西青区|