中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 混合使用C、C++和匯編語(yǔ)之:內(nèi)聯(lián)匯編和嵌入型匯編的使用

        混合使用C、C++和匯編語(yǔ)之:內(nèi)聯(lián)匯編和嵌入型匯編的使用

        作者: 時(shí)間:2013-09-30 來(lái)源:網(wǎng)絡(luò) 收藏

        本文引用地址:http://www.antipu.com.cn/article/257034.htm

        例如,指令BLfoo{r0=expression1,r1=expression2,r2}生成以下偽代碼:

        MOV(physical)r0,expression1

        MOV(physical)r1,expression2

        MOV(physical)r2,(virtual)r2

        BLfoo

        (3)輸出參數(shù)列表

        輸出參數(shù)列表{output_value_list}列出了用來(lái)存放功能函數(shù)和SWI調(diào)用返回值的寄存器或表達(dá)式。列表中的值可以是物理寄存器、可修改長(zhǎng)值表達(dá)式或單個(gè)物理寄存器名稱。

        程序從特定的物理寄存器中取值并賦值到特定的表達(dá)式中。指定物理寄存器名稱而并不賦值,導(dǎo)致相同名稱虛擬寄存器被物理寄存器中的值更新。

        例如,BLfoo{},{result1=r0,r1}生成以下偽碼:

        BLfoo

        MOVresult1,(physical)r0

        MOV(virtual)r1,(physical)r1

        (4)被破壞的寄存器列表(orruptedregisterlist)

        此列表指定被函數(shù)調(diào)用破壞的物理寄存器。如果條件標(biāo)志被調(diào)用的函數(shù)修改,必須在被破壞的寄存器列表中指定PSR。

        BL和SWI指令總是破壞lr。

        如果指令中缺少此列表項(xiàng),則r0~r3、ip、lr和PSR被破壞。

        注意

        指令BL和B的區(qū)別在于,跳轉(zhuǎn)指令B只能使程序跳轉(zhuǎn)到++程序的一個(gè)地址標(biāo)號(hào),不能用于子程序調(diào)用。

        9.內(nèi)嵌匯編中的標(biāo)號(hào)

        代碼中定義的標(biāo)號(hào)可被用作跳轉(zhuǎn)或C和“goto”語(yǔ)句的目標(biāo)。在代碼中,C和中定義的標(biāo)號(hào)可被用作跳轉(zhuǎn)指令的目標(biāo)。

        10.內(nèi)嵌匯編器版本間的差異

        不同版本的編譯器對(duì)內(nèi)聯(lián)匯編程序的語(yǔ)法要求有顯著差異。在具體使用時(shí)請(qǐng)參見相關(guān)文檔。

        ·如果使用的是ADSv1.2,請(qǐng)參閱ADS開發(fā)者指南;

        ·如果使用的是RVCTv1.2,請(qǐng)參閱RealView編譯工具1.2版開發(fā)者指南。

        12.1.2嵌入式匯編

        利用編譯器可將匯編代碼包括到一個(gè)或多個(gè)C或函數(shù)定義中去。嵌入式匯編器提供對(duì)目標(biāo)處理器不受限制的低級(jí)別訪問,利用它可以使用C和C++預(yù)處理程序偽操作(preprocessordirective)并可以方便的使用偏移量訪問結(jié)構(gòu)成員。

        本小節(jié)將介紹以下內(nèi)容:

        ·嵌入式匯編程序語(yǔ)法;

        ·嵌入式匯編語(yǔ)句的限制;

        ·嵌入式匯編程序表達(dá)式和C或C++表達(dá)式之間的差異;

        ·嵌入式匯編函數(shù)的生成;

        ·__cpp關(guān)鍵字;

        ·手動(dòng)重復(fù)解決方案;

        ·相關(guān)基類的關(guān)鍵字;

        ·成員函數(shù)類的關(guān)鍵字;

        ·調(diào)用非靜態(tài)成員函數(shù)。

        有關(guān)為處理器編寫的詳細(xì)信息,請(qǐng)參閱ADS或RealView編譯工具的匯編程序指南。

        1.嵌入式語(yǔ)法

        嵌入式匯編函數(shù)定義由--asm(C和C++)或asm(C++)函數(shù)限定符標(biāo)記,可用于:

        ·成員函數(shù);

        ·非成員函數(shù);

        ·模板函數(shù);

        ·模板類成員函數(shù)。

        用__asm或asm聲明的函數(shù)可以有調(diào)用參數(shù)和返回類型。它們從C和C++中調(diào)用的方式與普通C和C++函數(shù)調(diào)用方式相同。嵌入式匯編函數(shù)語(yǔ)法是:

        __asmreturn-typefunction-name(parameter-list)

        {

        //ARM/Thumb/Thumb-2assemblercode

        instruction[;instruction]

        ...

        [instruction]

        }

        嵌入式匯編的初始執(zhí)行狀態(tài)是在編譯程序時(shí)由編譯選項(xiàng)決定的。這些編譯選項(xiàng)如下所示:

        ·如果初始狀態(tài)為ARM狀態(tài),則內(nèi)嵌匯編器使用--arm選項(xiàng);

        ·如果初始狀態(tài)為Thumb狀態(tài),則內(nèi)嵌匯編器使用--thumb選項(xiàng)。

        注意

        嵌入式匯編的初始狀態(tài)由編譯器的編譯選項(xiàng)確定,與程序中的#pragmaarm和#pragmathumb偽操作無(wú)關(guān)。

        c語(yǔ)言相關(guān)文章:c語(yǔ)言教程


        c++相關(guān)文章:c++教程




        評(píng)論


        相關(guān)推薦

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

        關(guān)閉