新聞中心

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

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

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

        12.2從代碼訪問

        代碼中訪問,只能通過地址間接訪問。要訪問全局變量,必須在中使用IMPORT偽操作輸入全局變量,然后將地址載入寄存器。可以根據變量的類型使用載入和存儲指令訪問該變量。

        本文引用地址: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++教程




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 甘肃省| 大渡口区| 长岭县| 庆城县| 重庆市| 利津县| 独山县| 兰溪市| 双柏县| 云林县| 安丘市| 淅川县| 锦屏县| 田林县| 西乡县| 砚山县| 弥勒县| 临澧县| 长泰县| 义乌市| 福海县| 金阳县| 蒙阴县| 亳州市| 景泰县| 安顺市| 彭山县| 乾安县| 金川县| 双辽市| 泸溪县| 凤山市| 武宁县| 永平县| 时尚| 清河县| 慈溪市| 永修县| 孟州市| 岑溪市| 广东省|