• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

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

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

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

    本文引用地址:http://www.czjhyjcfj.com/article/257047.htm

    10.2.4LDR

    (1)語(yǔ)法格式

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

    語(yǔ)法格式如下。

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

    ①cond

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

    ②.W

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

    ③register

    目標(biāo)寄存器。

    ④expr

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

    ·當(dāng)expr表示的地址值沒(méi)有超過(guò)MOV或MVN指令的地址取值范圍時(shí),匯編器用一對(duì)MOV和MVN指令代替LDR指令。

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

    ⑤label-expr

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

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

    (2)使用說(shuō)明

    當(dāng)要裝載的常量超出了MOV或MVN指令的范圍時(shí),使用LDR指令。

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

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

    (3)示例

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

    LDRr3,=0xff0;

    相當(dāng)于下面的指令:

    MOVr3,#0xff0

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

    LDRr1,=0xfff;

    相當(dāng)于下面的指令:

    LDRr1,[pc,offset_to_litpool]

    ...

    litpoolDCD0xfff

    ③將place標(biāo)號(hào)地址讀入r1中。

    LDRr2,=place;

    相當(dāng)于下面的ARM指令:

    LDRr2,[pc,offset_to_litpool]

    ...

    litpoolDCDplace


    上一頁(yè) 1 2 下一頁(yè)

    評(píng)論


    相關(guān)推薦

    技術(shù)專(zhuān)區(qū)

    關(guān)閉
    主站蜘蛛池模板: 佛冈县| 突泉县| 沂源县| 湟中县| 辉县市| 疏勒县| 克山县| 水城县| 绥芬河市| 克东县| 南宫市| 中方县| 永吉县| 保德县| 兴海县| 利辛县| 米脂县| 孝义市| 沙坪坝区| 巍山| 望城县| 九寨沟县| 通州区| 杂多县| 鄱阳县| 安平县| 长丰县| 德安县| 乌兰察布市| 金湖县| 湟中县| 安达市| 天等县| 黄山市| 周至县| 新和县| 鹤岗市| 土默特右旗| 泾阳县| 水城县| 永丰县|