在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > Thumb指令集之: ARM和Thumb的混合編程

            Thumb指令集之: ARM和Thumb的混合編程

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

            本文引用地址:http://www.biyoush.com/article/257035.htm

            指令的語法格式為:

            BLXRm>

            其中Rm>為目標地址寄存器,r0~r14寄存器均可以作為目標地址寄存器。

            注意

            如果在此指令中使用r15作為目的寄存器,指令的執(zhí)行結果不可預知。

            此指令只在v5版本以上指令集中被支持。

            指令操作的偽代碼為:

            LR=(addressoftheinstructionafterthisBLX)|1

            TFlag=Rm[0]

            PC=Rm[31:1]1

            (3)匯編偽指令

            匯編編譯器可以產生代碼也可以產生Thumb代碼。使用--thumb或--16選項指示編譯器產生Thumb代碼。由于所有支持Thumb代碼的處理器都從ARM狀態(tài)開始執(zhí)行,所以必須人為地使用BX或BLX指令,使處理器狀態(tài)切換到Thumb狀態(tài)并使用下面的偽操作使編譯器產生Thumb代碼。

            ·CODE16

            ·CODE32

            CODE32偽操作指示匯編器后面的指令為32位的ARM指令。

            ARM和CODE32偽操作的意義相同。

            當匯編器對源程序進行編譯時,如果需要,將會在程序中插入空指令,以保證內存單元字對齊。

            語法格式如下。

            ARM

            CODE32

            使用在同時包含ARM指令和Thumb指令的源文件中。當需要從ARM指令序列切換到Thumb指令序列時,使用偽操作ARM(或CODE32);當需要從Thumb指令序列切換到ARM指令序列時使用Thumb偽操作。ARM(或CODE32)偽操作只是指示匯編器后面的指令類型是ARM指令。該偽操作本身并不進行程序狀態(tài)的切換,要進行狀態(tài)切換,可以使用BX指令操作。

            CODE16偽指令通知編譯器,其后的指令序列為16位的Thumb指令。

            語法格式如下。

            CODE16

            若在匯編源程序中同時包含ARM指令和Thumb指令時,可用CODE16偽指令通知編譯器其后的指令序列為16位的Thumb指令。

            (4)編程實例

            PRESERVE8

            AREAAddReg,CODE,READONLY ;段名為AddReg,屬性為READONLY

            ENTRY ;程序入口

            ;SECTION1

            main

            ADRr0,ThumbProg+1 ;確定跳轉地址

            ;并將bit[0]置1

            ;使程序切換到thumb狀態(tài)

            BXr0 ;程序跳轉并執(zhí)行狀態(tài)切換

            ;SECTION2

            CODE16 ;Thumb代碼指示偽操作

            ThumbProg

            MOVr2,#2 ;r2=2

            MOVr3,#3 ;r2=3

            ADDr2,r2,r3 ;r2=r2+r3

            ADRr0,ARMProg

            BXr0 ;程序跳轉并執(zhí)行狀態(tài)切換

            ;SECTION3

            CODE32 ;ARM代碼指示偽操作

            ARMProg

            MOVr4,#4

            MOVr5,#5

            ADDr4,r4,r5

            ;SECTION4

            stopMOVr0,#0x18 ;設置semihosting軟中斷號

            LDRr1,=0x20026 ;ADP_Stopped_ApplicationExit

            SWI0x123456 ;ARMsemihostingSWI軟中斷調用

            END ;文件結束

            c++相關文章:c++教程




            評論


            相關推薦

            技術專區(qū)

            關閉