新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 混合使用C、C++和匯編語之:從匯編代碼訪問 C 全局變量

        混合使用C、C++和匯編語之:從匯編代碼訪問 C 全局變量

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

        12.2從代碼訪問

        代碼中訪問,只能通過地址間接訪問。要訪問全局變量,必須在中使用IMPORT偽操作輸入全局變量,然后將地址載入寄存器??梢愿鶕兞康念愋褪褂幂d入和存儲指令訪問該變量。

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

        對于無符號變量,使用:

        ·LDRB/STRB:用于char型;

        ·LDRH/STRH:用于short型(對于體系結構v3,使用兩個LDRB/STRB指令);

        ·LDR/STR:用于int型。

        對于有符號變量,請使用等效的有符號數的Load/Store指令,如LDRSB和LDRSH。

        對于少于8個字的小結構體可以用LDM和STM指令將其作為整體訪問。同時也可以用適當類型的Load/Store指令訪問結構的單個成員。為了訪問成員,必須了解該成員地址相對于結構體開始處的偏移量。

        下面的例子將整型全局變量globvar的地址載入r1、將該地址中包含的值載入r0、將它與2相加,然后將新值存回globvar中。

        PRESERVE8

        AREAglobals,ODE,READONLY

        EXPORTasmsubroutine

        IMPORTglobvar

        asmsubroutine

        LDRr1,=globvar;readaddressofglobvarinto

        ;r1fromliteralpool從內存池中讀取globvar變量的地址,加載到r1中

        LDRr0,[r1]

        ADDr0,r0,#2

        STRr0,[r1]

        MOVpc,lr

        END

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




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 温泉县| 开封县| 湄潭县| 阳山县| 汉川市| 慈溪市| 日喀则市| 沅江市| 集安市| 大竹县| 嘉义县| 乌拉特前旗| 泗阳县| 炉霍县| 昭苏县| 米脂县| 达尔| 连南| 旬阳县| 南岸区| 济阳县| 清丰县| 象山县| 澳门| 东乌珠穆沁旗| 精河县| 措美县| 崇阳县| 博野县| 铜川市| 象山县| 嘉黎县| 连江县| 丘北县| 彰武县| 湘乡市| 涪陵区| 花莲县| 大兴区| 邹城市| 长顺县|