<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

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

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

10.2匯編器所支持的

匯編器支持,這些在匯編階段被翻譯成ARM或者Thumb(或Thumb-2)指令(或指令序列)。ARM偽指令包含ADR、ADRL、MOV32和LDR。

·ADR偽指令(program-relative)或(register-relative)地址(小范圍地址)到寄存器。

·ADRL偽指令(program-relative)或(register-relative)地址(中等范圍地址)到寄存器。

·MOV32裝載32位常數或地址到寄存器(ARMv6T2體系結構及以上版本支持)。

·LDR裝載32位常數或地址到寄存器(所有ARM版本均支持)。

10.2.1ADR偽指令

(1)語(yǔ)法格式

ADR為小范圍地址讀取偽指令。ADR偽指令將基于PC相對偏移地址或基于寄存器相對偏移地址值讀取到寄存器中,當地址值是字節對齊時(shí),取值范圍為−255~255,當地址值是字對齊時(shí),取值范圍−1020~1020。當地址值是16字節對齊時(shí)其取值范圍更大。

語(yǔ)法格式如下。

ADR{cond}{.W}register,label

①cond

可選的指令執行條件。

②.W

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

③register

目標寄存器。

④label

基于PC或具有寄存器的表達式。

(2)使用說(shuō)明

ADR被匯編器編譯成一條指令。匯編器通常使用ADD或SUB指令來(lái)實(shí)現偽操作的地址裝載功能。如果不能用一條指令來(lái)實(shí)現ADR偽指令的功能,匯編器將報告錯誤。

(3)示例

LDRr4,=data+4*n ;n是匯編時(shí)產(chǎn)生的變量

;code

MOVpc,lr

dataDCDvalue0

;n-1條DCD偽操作

DCDvaluen ;所要裝載入r4的值

;更多DCD偽操作

10.2.2ADRL偽指令

(1)語(yǔ)法格式

ADRL為中等范圍地址讀取偽指令。ADRL偽指令將基于PC相對偏移的地址或基于寄存器相對偏移的地址值讀取到寄存器中,當地址值是字節對齊時(shí),取值范圍為−64KB~64KB,當地址值是字對齊時(shí),取值范圍為−256KB~256KB。當地址值是16字節對齊時(shí),其取值范圍更大。在32-bit的Thumb-2指令中,地址取值范圍到達±1MB。

注意

ADRL只能用在A(yíng)RM匯編或Thumb-2匯編中,Thumb匯編器不支持ADRL偽指令。

語(yǔ)法格式如下。

ADRL{cond}register,label

①cond

可選的指令執行條件。

②register

目標寄存器。

③label

基于PC或具體寄存器的表達式。

(2)使用說(shuō)明

ADRL偽指令與ADR偽指令相似,用于將基于PC相對偏移的地址或基于寄存器相對偏移的地址值讀取到寄存器中。所不同的是ADRL偽指令比ADR偽指令可以讀取更大范圍的地址。這是因為在編譯階段,ADRL偽指令被編譯器換成兩條指令。即使一條指令可以完成該操作,編譯器也將產(chǎn)生兩條指令,其中一條為多余指令。如果匯編器不能在兩條指令內完成操作,將報告錯誤,中止編譯。

注意

如果使用ADRL偽指令裝載標號地址,那么被裝載的標號必須和偽指令ADRL在同一個(gè)段中。

10.2.3MOV32偽指令

(1)語(yǔ)法格式

MOV32偽指令裝載一個(gè)32位常數或地址到寄存器。

與ADR和ADRL指令不同,MOV32偽指令裝載的地址是位置相關(guān)地址。

語(yǔ)法格式如下。

MOV32{cond}register,expr

①cond

可選的指令執行條件。

②register

目標寄存器。

③expr

表達式,可以是下面幾種形式。

·symbol:程序中定義的標號地址。

·constant:任意32-bit的常數。

·symbol+constant:地址標號加32-bit常數。

(2)使用說(shuō)明

一般情況下匯編器將一條MOV32偽指令翻譯成一對MOV和MOVT指令。這樣任何32-bit常量都可以被裝載到寄存器。

注意

通過(guò)這種方法裝載的程序地址是在程序鏈接時(shí)由鏈接器確定的,是位置相關(guān)地址。


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

評論


相關(guān)推薦

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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>