在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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>

            新聞中心

            ARM 一些特殊符號(hào)

            作者: 時(shí)間:2016-11-11 來(lái)源:網(wǎng)絡(luò) 收藏
            特殊符號(hào)對(duì)應(yīng)指令含義

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

            特殊符號(hào)對(duì)應(yīng)指令含義


            = DCB 分配一片連續(xù)的字節(jié)存儲(chǔ)單元并用指定的數(shù)據(jù)初始化


            &DCD 分配一片連續(xù)的字存儲(chǔ)單元并用指定的數(shù)據(jù)初始化


            % SPACE 分配一片連續(xù)的存儲(chǔ)單元


            ^ MAP 定義一個(gè)結(jié)構(gòu)化內(nèi)存表的首地址


            # FILED 定義一個(gè)結(jié)構(gòu)化內(nèi)存表的數(shù)據(jù)域


            *EQU 為程序中的常量、標(biāo)號(hào)等定義一個(gè)等效的字符名稱,

            ! 地址更新,結(jié)果寫(xiě)回到Rn中,Rn不允許是R15


            [ | ]相當(dāng)于IFELSEENDIF

            其他:

            LDM中{∧}為可選后綴,當(dāng)指令為L(zhǎng)DM且寄存器列表中包含R15,選用該后綴時(shí)表示:除了正常的數(shù)據(jù)傳送之外,還將SPSR復(fù)制到 CPSR。同時(shí),該后綴還表示傳入或傳出的是用戶模式下的寄存器,而不是當(dāng)前模式下的寄存器。

            TST R1,#%1 // 用于測(cè)試在寄存器R1中是否設(shè)置了最低位(%表示二進(jìn)制數(shù)

            n $:如果在串變量前有一個(gè)$則在匯編時(shí)編譯器將用該串變量的數(shù)值取代該串變量,如:

            GBLS STR1

            GBLS STR2

            STR1 SETS “pen.”

            STR2 SETS“This is a $STR1"

            編譯后的結(jié)果是STR2的值為T(mén)his is a pen.

            如果$后是數(shù)字變量(與串變量區(qū)分),在匯編時(shí)編譯器將該數(shù)字變量的數(shù)值轉(zhuǎn)換成十六進(jìn)制的串,然后用該十六進(jìn)制的串取代$后的數(shù)字變量。

            如果$后是邏輯變量,在匯編時(shí)編譯器將該邏輯變量替換成它的取值(T或者F)。

            如果程序中需要$,則用$$來(lái)表示,編譯器將不進(jìn)行變量替換。

            注意:在兩個(gè)豎線“|”之間的$并不表示進(jìn)行變量替換,但如果“|”是在雙引號(hào)內(nèi),則將進(jìn)行變量替換。

            B . //表示程序進(jìn)入死循環(huán)。.為location counter,可在源文件中指示當(dāng)前地址。該符號(hào)可以被引用或賦值。

            arm匯編程序中的符號(hào)

            在arm匯編語(yǔ)言中,符號(hào)(symbols)可以代表地址(addresse)、變量(variables)和數(shù)字常量(numeric constants)。當(dāng)符號(hào)代表地址時(shí),又稱為標(biāo)號(hào)(lable)。當(dāng)標(biāo)號(hào)以數(shù)字開(kāi)頭時(shí),其作用范圍為當(dāng)前段(當(dāng)前段沒(méi)有使用ROUT偽操作時(shí)),這種標(biāo)號(hào)又稱為局部標(biāo)號(hào)(lacal lable)。符號(hào)變量包括變量、數(shù)字常量、標(biāo)號(hào)和局部標(biāo)號(hào)。

            1、變量

            在程序中,變量的值在匯編處理過(guò)程中可能會(huì)發(fā)生改變。在arm匯編中變量有數(shù)字變量、邏輯變量和串變量3種類(lèi)型。變量的類(lèi)型在程序中是不可以改變的。

            數(shù)字變量的取值范圍為數(shù)字常量和數(shù)字表達(dá)式所能表示的數(shù)值;邏輯變量的取值范圍為{true}和{flash};串變量的取值范圍為串表達(dá)式可以表達(dá)的范圍。

            在arm匯編語(yǔ)言中,使用GBLA、GBLL及GBLS聲明全局變量;使用LCLA、LCLL及LCLS聲明局部變量;使用SETA、SETL及SETS為這些變量賦值。

            2、數(shù)字常量

            數(shù)字常量是32位的整數(shù)。在arm匯編語(yǔ)言中,使用EQU來(lái)定義數(shù)字常量。數(shù)字常量一經(jīng)定義就不可修改。 進(jìn)行大小比較時(shí),認(rèn)為數(shù)字常量都是無(wú)符號(hào)數(shù)。

            3、匯編時(shí)變量的替換

            如果在串變量前有一個(gè)$字符,在匯編時(shí)編譯器將用改串的數(shù)值來(lái)取代該串變量。

            對(duì)于數(shù)字變量來(lái)說(shuō),如果該變量前面有一個(gè)$字符,在匯編時(shí)編譯器將該數(shù)字變量的數(shù)值轉(zhuǎn)換成十六進(jìn)制的串,然后用該十六進(jìn)制的串取代$字符后的數(shù)字變量。

            對(duì)于邏輯變量來(lái)說(shuō),如果該邏輯變量前面有一個(gè)$字符,在匯編時(shí)編譯器將該邏輯變量替換成它的取值(T或者F)

            如果程序中需要字符$,則用$$來(lái)表示,編譯器將不進(jìn)行變量替換,而是將$$當(dāng)作$.通常情況下,包含在兩個(gè)豎線(|)之間的$并不表示進(jìn)行變量替換。但是如果豎線(|)是在雙引號(hào)內(nèi),則將進(jìn)行變量替換。

            使用“.”來(lái)表示變量名稱的結(jié)束。

            4、標(biāo)號(hào)

            標(biāo)號(hào)是表示程序中的指令或者數(shù)據(jù)地址的符號(hào)。根據(jù)標(biāo)號(hào)的生成方式可分為3種:基于PC的標(biāo)號(hào)?;赑C的標(biāo)號(hào)是位于目標(biāo)指令前或者程序中數(shù)據(jù)定義偽操作前的標(biāo)號(hào)。這種標(biāo)號(hào)在匯編時(shí)將被處理成PC值加上(或減去)一個(gè)數(shù)字常量。常用于表示跳轉(zhuǎn)指令的目標(biāo)地址,或者代碼段中所嵌入的少量數(shù)據(jù)。

            基于寄存器的標(biāo)號(hào)?;诩拇嫫鞯臉?biāo)號(hào)常用MAP和FIELD未定義操作,也可以該用EQU偽定義。這種標(biāo)號(hào)在匯編時(shí)將被處理成寄存器的值加上(或減去)一個(gè)數(shù)據(jù)常量。常用于訪問(wèn)數(shù)據(jù)段中的數(shù)據(jù)。

            絕對(duì)地址。絕對(duì)地址是一個(gè)32位數(shù)據(jù)。它可以尋址2^32 -1,即直接可以尋址整個(gè)內(nèi)存空間。

            5、局部標(biāo)號(hào)

            局部標(biāo)號(hào)主要在局部范圍內(nèi)使用。它由兩部組成:開(kāi)頭是一個(gè)0-99直接的數(shù)字,后面緊接一個(gè)通常表示該局部變量作用范圍的符號(hào)。

            局部變量的作用范圍通常為當(dāng)前段,也可以用偽操作ROUT來(lái)定義局部變量的作用范圍。

            局部變量定義的語(yǔ)法格式如下:

            N{routname},其中,N為0~99之間的數(shù)字。routname為符號(hào),通常為該變量作用范圍的名稱(用ROUT偽操作定義的)。

            局部變量引用的語(yǔ)法格式如下:

            %{F|B}{A|T}N{routname}

            其中,N為局部變量的數(shù)字號(hào)。

            routname為當(dāng)前作用范圍的名稱(用ROUT偽操作定義的)

            %表示引用操作

            F指示編譯器只向前搜索

            B指示編譯器只向后搜索

            A指示編譯器搜索宏的所有嵌套層次

            T指示編譯器搜索宏的當(dāng)前層次

            如果F和B都沒(méi)有指定,編譯器先向前搜索,再向后搜索如果A和T都沒(méi)有指定,編譯器搜索所有從當(dāng)前層次到宏的最高層次,比當(dāng)前層次低的層次不再搜索。

            如果指定了routname,編譯器向前搜索最近的ROUT偽操作,若routname與該ROUT偽操作定義的名稱不匹配,編譯器報(bào)告錯(cuò)誤,匯編失敗。

            arm匯編語(yǔ)言中的表達(dá)式

            表達(dá)式是由符號(hào)、數(shù)值、單目或多目操作符以及括號(hào)組成的。

            1、字符串表達(dá)式

            字符串表達(dá)式由字符串、字符串變量、操作符以及括號(hào)組成。字符串的最大長(zhǎng)度為512字節(jié),最小長(zhǎng)度為0.下面介紹字符串表達(dá)式的組成元素。

            字符串:由包含在雙引號(hào)內(nèi)的一系列的字符組成。字符串的長(zhǎng)度受到arm匯編語(yǔ)言語(yǔ)句長(zhǎng)度的限制。當(dāng)在字符串中包含美元符號(hào)$或者引號(hào)"時(shí),用$$表示一個(gè)$,用""表示一個(gè)"。

            字符串變量:用偽操作GBLS或者LCLS聲明,用SETS賦值。

            操作符:

            (1)LEN:返回字符串的長(zhǎng)度

            :LEN:A

            其中,A為字符串變量(2)CHR:可以將0~255之間的整數(shù)作為含一個(gè)ASCII字符的字符串。當(dāng)有些ASCII字符不方便放在字符串中時(shí),可以使用CHR將其放在字符串表達(dá)式中。

            :CHR:A

            其中,A為某一字符的ASCII值(3)STR:將一個(gè)數(shù)字量或者邏輯表達(dá)式轉(zhuǎn)換成串。對(duì)于32位的數(shù)字量而言,STR將其轉(zhuǎn)換成8個(gè)十六進(jìn)制數(shù)組成的串;對(duì)于邏輯表達(dá)式而言,STR將其轉(zhuǎn)換成字符串T或者F

            :STR:A

            其中,A為數(shù)字量或者邏輯表達(dá)式

            (4)LEFT:返回一個(gè)字符串最左端一定長(zhǎng)度的子串

            A:LEFT:B

            其中,A為源字符串,B為數(shù)字量,表示LEFT將返回的字符個(gè)數(shù)

            (5)RIGHT:返回一個(gè)字符串最右端一定長(zhǎng)度的子串

            A:RIGHT:B

            其中,A為源字符串,B為數(shù)字量,表示RIGHT將返回的字符個(gè)數(shù)(6)CC:用于連接兩個(gè)字符串。

            A:CC:B

            其中,A為第1個(gè)源字符串。B為第2個(gè)源字符串。CC操作符將字符串B連接在字符串A的后面。

            2、數(shù)字表達(dá)式

            數(shù)字表達(dá)式由數(shù)字常量、數(shù)字變量、操作符和括號(hào)組成

            數(shù)字變量用偽操作GBLA或者LCLA聲明,用SETA賦值,它代表一個(gè)32位的數(shù)字量。

            操作符:

            (1)NOT:按位取反

            :NOT:A

            其中,A為一個(gè)32位數(shù)字量

            (2)+、—、×、/及MOD算術(shù)操作符

            A+B,A-B,A×B,A/B

            A:MOD:B表示A除以B的余數(shù)

            (3)ROL,ROR,SHL,SHR移位

            A:ROL:B將整數(shù)A循環(huán)左移B位

            A:SHL:B將整數(shù)A左移B位

            (4)AND、OR及EOR按位邏輯操作符

            A:AND:B將數(shù)字表達(dá)式A和B按位作邏輯與操作

            3、基于寄存器和基于PC的表達(dá)式

            基于寄存器的表達(dá)式表示了某個(gè)寄存器的值加上(或者減去)一個(gè)數(shù)字表達(dá)式

            基于PC的表達(dá)式表示了PC寄存器的值加上(或減去)一個(gè)數(shù)字表達(dá)式?;赑C的表達(dá)式通常由程序中的標(biāo)號(hào)與一個(gè)數(shù)字表達(dá)式組成。相關(guān)的操作符:(1)BASE:返回基于寄存器的表達(dá)式中的寄存器編號(hào)。

            :BASE:A A為基于寄存器的表達(dá)式

            (2)INDEX:返回基于寄存器的表達(dá)式相對(duì)于其基址寄存器的偏移量。

            :INDEX:A A為基于寄存器的表達(dá)式

            (3)+、﹣:正負(fù)號(hào),可以放在數(shù)字表達(dá)式或者基于PC的表達(dá)式前面。

            +A(﹣A)A為基于PC的表達(dá)式或者數(shù)字表達(dá)式

            4、邏輯表達(dá)式

            由邏輯量、邏輯操作符、關(guān)系操作符以及括號(hào)組成,取值范圍為{FLASE}和{TRUE}關(guān)系操作符:用于表示兩個(gè)同類(lèi)表達(dá)式之間的關(guān)系。關(guān)系操作符和它的兩個(gè)操作數(shù)組成一個(gè)邏輯表達(dá)式,其取值為{FALSE}或{TRUE}

            如A=B表示A等于B

            A/=B,A<>B表示A不等于B邏輯操作符:進(jìn)行兩個(gè)邏輯表達(dá)式之間的基本邏輯操作。操作的結(jié)果為{FLASE}或{TRUE}

            :LNOT:A邏輯表達(dá)式A的值取反

            A:LAND:B邏輯表達(dá)式A和B邏輯與

            5、其他的一些操作符

            (1)?:返回定義符號(hào)A的代碼行所生成的可執(zhí)行代碼的字節(jié)數(shù)?A其中,A為一個(gè)符號(hào)

            (2)DEF:判斷某個(gè)符號(hào)是否已定義

            :DEF:A

            如果符號(hào)A已經(jīng)定義,上述結(jié)果為{TRUE},否則為{FLASE}

            (3)SB_OFFSET_19_12

            :SB_OFFSET_19_12:label 其中,label為一個(gè)標(biāo)號(hào)

            返回(label-SB)的bits[19:12]

            (4)SB_OFFSET_11_0

            :SB_OFFSET_11_0:label



            關(guān)鍵詞: ARM特殊符

            評(píng)論


            技術(shù)專(zhuān)區(qū)

            關(guān)閉