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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > ARM匯編程序設(shè)計之: ARM匯編器所支持的偽指令

          ARM匯編程序設(shè)計之: ARM匯編器所支持的偽指令

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

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

          10.2.4LDR

          (1)語法格式

          LDR裝載一個32-bit常數(shù)和一個地址到寄存器。

          語法格式如下。

          LDR{cond}{.W}register,=[expr|label-expr]

          ①cond

          可選的指令執(zhí)行條件。

          ②.W

          可選項。指定指令寬度(Thumb-2指令集支持)。

          ③register

          目標寄存器。

          ④expr

          32位常量表達式。匯編器根據(jù)expr的取值情況,對LDR做如下處理。

          ·當expr表示的地址值沒有超過MOV或MVN指令的地址取值范圍時,匯編器用一對MOV和MVN指令代替LDR指令。

          ·當expr表示的指令地址值超過了MOV或MVN指令的地址范圍時,匯編器將常數(shù)放入數(shù)據(jù)緩存池,同時用一條基于PC的LDR指令讀取該常數(shù)。

          ⑤label-expr

          一個程序相關(guān)或聲明為外部的表達式。匯編器將label-expr表達式的值放入數(shù)據(jù)緩存池,使用一條程序相關(guān)LDR指令將該值取出放入寄存器。

          當label-expr為聲明為外部的表示式時,匯編器將在目標文件中插入鏈接重定位偽操作,由鏈接器在鏈接時生成該地址。

          (2)使用說明

          當要裝載的常量超出了MOV或MVN指令的范圍時,使用LDR指令。

          由LDR指令裝載的地址是絕對地址,即PC相關(guān)地址。

          當要裝載的數(shù)據(jù)不能由MOV或MVN指令直接裝載時,該值要先放入數(shù)據(jù)緩存池,此時LDR偽指令處的PC值到數(shù)據(jù)緩存池中目標數(shù)據(jù)所在地址的偏移量有一定限制。或32-bit的Thumb-2指令中該范圍是±4KB,Thumb或16-bit的Thumb-2指令中為0~1KB。

          (3)示例

          ①將常數(shù)0xff0讀到r1中。

          LDRr3,=0xff0;

          相當于下面的指令:

          MOVr3,#0xff0

          ②將常數(shù)0xfff讀到r1中。

          LDRr1,=0xfff;

          相當于下面的指令:

          LDRr1,[pc,offset_to_litpool]

          ...

          litpoolDCD0xfff

          ③將place標號地址讀入r1中。

          LDRr2,=place;

          相當于下面的ARM指令:

          LDRr2,[pc,offset_to_litpool]

          ...

          litpoolDCDplace


          上一頁 1 2 下一頁

          評論


          相關(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); })();