<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 混合使用C、C++和匯編語(yǔ)之:從匯編代碼訪問(wèn) C 全局變量

          混合使用C、C++和匯編語(yǔ)之:從匯編代碼訪問(wèn) C 全局變量

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

          12.2從代碼訪問(wèn)

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

          本文引用地址:http://www.ex-cimer.com/article/257033.htm

          對(duì)于無(wú)符號(hào)變量,使用:

          ·LDRB/STRB:用于char型;

          ·LDRH/STRH:用于short型(對(duì)于體系結(jié)構(gòu)v3,使用兩個(gè)LDRB/STRB指令);

          ·LDR/STR:用于int型。

          對(duì)于有符號(hào)變量,請(qǐng)使用等效的有符號(hào)數(shù)的Load/Store指令,如LDRSB和LDRSH。

          對(duì)于少于8個(gè)字的小結(jié)構(gòu)體可以用LDM和STM指令將其作為整體訪問(wèn)。同時(shí)也可以用適當(dāng)類型的Load/Store指令訪問(wèn)結(jié)構(gòu)的單個(gè)成員。為了訪問(wèn)成員,必須了解該成員地址相對(duì)于結(jié)構(gòu)體開(kāi)始處的偏移量。

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

          PRESERVE8

          AREAglobals,ODE,READONLY

          EXPORTasmsubroutine

          IMPORTglobvar

          asmsubroutine

          LDRr1,=globvar;readaddressofglobvarinto

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

          LDRr0,[r1]

          ADDr0,r0,#2

          STRr0,[r1]

          MOVpc,lr

          END

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




          關(guān)鍵詞: 匯編代碼 全局變量 C C++ 匯編 ARM

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();