新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM匯編程序設計之: ARM匯編器所支持的偽指令

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

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

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

        10.2.4LDR

        (1)語法格式

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

        語法格式如下。

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

        ①cond

        可選的指令執行條件。

        ②.W

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

        ③register

        目標寄存器。

        ④expr

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

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

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

        ⑤label-expr

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

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

        (2)使用說明

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

        由LDR指令裝載的地址是絕對地址,即PC相關地址。

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

        (3)示例

        ①將常數0xff0讀到r1中。

        LDRr3,=0xff0;

        相當于下面的指令:

        MOVr3,#0xff0

        ②將常數0xfff讀到r1中。

        LDRr1,=0xfff;

        相當于下面的指令:

        LDRr1,[pc,offset_to_litpool]

        ...

        litpoolDCD0xfff

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

        LDRr2,=place;

        相當于下面的ARM指令:

        LDRr2,[pc,offset_to_litpool]

        ...

        litpoolDCDplace


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 大新县| 灵宝市| 榆树市| 留坝县| 中超| 平南县| 肥西县| 永登县| 电白县| 肃北| 祁门县| 青铜峡市| 正阳县| 博客| 出国| 苏州市| 巴彦淖尔市| 克东县| 壤塘县| 万州区| 临潭县| 永川市| 东明县| 武宁县| 紫云| 云阳县| 延吉市| 长汀县| 通州区| 温宿县| 乐清市| 奎屯市| 濮阳县| 天水市| 高州市| 紫阳县| 北川| 闸北区| 仙居县| 醴陵市| 攀枝花市|