在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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) > 設(shè)計(jì)應(yīng)用 > ARM Cortex-M3 學(xué)習(xí)筆記(4-1)

            ARM Cortex-M3 學(xué)習(xí)筆記(4-1)

            作者: 時(shí)間:2016-11-20 來源:網(wǎng)絡(luò) 收藏
            最近在學(xué)ARM Cortex-M3,找了本號(hào)稱很經(jīng)典的書“An Definitive Guide to The ARM Cortex-M3”在看。這個(gè)系列學(xué)習(xí)筆記其實(shí)就是在學(xué)習(xí)這本書的過程中做的讀書筆記。

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

            第四章 指令系統(tǒng)

            基本語法

            這里介紹的匯編語法是ARM匯編器的語法,如果采用其他的匯編器,比如gcc中的as,語法是不同的。

            匯編指令的典型模式如下所示:

            Label

            opcode operand1, operand2, … ;comment

            標(biāo)號(hào)是可選的,如果有,它必須頂格寫,標(biāo)號(hào)后面不需要“:”。

            操作碼是指令的助記符,它的前面必須有至少一個(gè)空白符。

            立即數(shù)必須以“#”開頭,16進(jìn)制數(shù)字表示與C語言的方法相同,比如:

            MOV R0, #0x12 ; R0 ? 0x12

            使用EQU指示字來定義常數(shù):

            NVIC_IRQ_SETEN0 EQU 0xE000E100 ; 注意:常數(shù)定義必須頂格寫

            NVIC_IRQ0_ENABLE EQU 0x1

            LDR R0, =NVIC_IRQ_SETEN0 ;在這里的LDR是個(gè)偽指令,它會(huì)被匯編器轉(zhuǎn)換成

            ;一條“相對(duì)PC的加載指令”

            MOV R1, #NVIC_IRQ0_ENABLE ; 把立即數(shù)傳送到R1中

            DCI 可以在匯編代碼中插入1 個(gè)half word (2個(gè)字節(jié)),通常用這條指令插入?yún)R編器不支持的指令。

            DCB來定義一串字節(jié)常數(shù)

            DCD來定義一串32位整數(shù)

            比如下面的例子:

            LDR R3, =MY_NUMBER ; R3= MY_NUMBER

            LDR R4, [R3] ; R4= *R3

            LDR R0, =HELLO_TEXT ; R0= HELLO_TEXT

            BL PrintText ; 呼叫PrintText以顯示字符串,R0傳遞參數(shù)

            MY_NUMBER

            DCD 0x12345678

            HELLO_TEXT

            DCB ”Hellon”,0

            指令后綴

            后綴

            含義

            S

            要求更新APSR中的相關(guān)標(biāo)志,例如:

            ADDS R0, R1 ; 根據(jù)加法的結(jié)果更新APSR中的標(biāo)志

            EQ,NE,LT,GT等

            有條件地執(zhí)行指令。

            EQ=Euqal, NE= Not Equal, LT= Less Than, GT= Greater Than,例如:

            BEQ

            統(tǒng)一匯編語言(UAL)

            與Thumb-2指令集同時(shí)出現(xiàn)的還有新的匯編語法(統(tǒng)一匯編語言)。利用統(tǒng)一匯編語言的語法,我們可以方便的選擇當(dāng)前的語句是被編譯為16位的指令還是編譯為32位的指令。

            ADD R0, R1 ; 使用傳統(tǒng)的Thumb語法

            ADD R0, R0, R1 ; 引入U(xiǎn)AL后允許的等效寫法(R0=R0+R1)

            如果使用傳統(tǒng)的Thumb語法,有些指令會(huì)默認(rèn)地更新APSR。

            如果使用UAL語法,則必須指定S后綴才會(huì)更新。例如:

            AND R0, R1 ;傳統(tǒng)的Thumb語法

            ANDS R0, R0, R1 ;等值的UAL語法(必須有S后綴)

            .W(Wide)后綴指定32位指令,.N后綴制定采用16位指令。如果沒有給出后綴,匯編器會(huì)先試著用16位指令以給代碼瘦身,如果不行再使用32位指令。例如:

            ADDS R0, #1 ;匯編器將為了節(jié)省空間而使用16位指令

            ADDS.N R0, #1 ;指定使用16位指令(N=Narrow)

            ADDS.W R0, #1 ;指定使用32位指令(W=Wide)

            32位的Thumb-2指令可以half word 對(duì)齊。不用word對(duì)齊使得代碼中混用16位指令和32位指令變得很容易。

            了。



            關(guān)鍵詞: ARMCortex-M

            評(píng)論


            相關(guān)推薦

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

            關(guān)閉