ARM匯編程序設(shè)計(jì)之:ARM匯編器所支持的偽操作
5.協(xié)處理器寄存器名稱(chēng)定義偽操作CN
(1)語(yǔ)法格式
CN偽操作為協(xié)處理器寄存器定義名稱(chēng)。
語(yǔ)法格式如下。
NameCNexpr
①Name
定義的協(xié)處理器寄存器的名稱(chēng)。
注意 | 該名稱(chēng)不能和已經(jīng)定義寄存器或協(xié)處理器名稱(chēng)相同。 |
②expr
協(xié)處理器寄存器編號(hào)。
(2)使用說(shuō)明
協(xié)處理器寄存器編號(hào)的數(shù)值范圍為0~15。避免使用不同的名稱(chēng)定義同一物理寄存器。
注意 | 協(xié)處理器寄存器的名稱(chēng)不能被定義為c0~c15,這些名稱(chēng)已經(jīng)被匯編器預(yù)定義。 |
(3)示例
將協(xié)處理器寄存器6命名為Power。
PowerCN6
6.協(xié)處理器名稱(chēng)定義偽操作CP
(1)語(yǔ)法格式
CP偽操作為指定的協(xié)處理器定義名稱(chēng)。
語(yǔ)法格式如下。
NameCPexpr
①Name
定義的協(xié)處理器名稱(chēng)。
注意 | 該名稱(chēng)不能和已經(jīng)定義寄存器或其他協(xié)處理器名稱(chēng)相同。 |
②expr
協(xié)處理器編號(hào)。
(2)使用說(shuō)明
協(xié)處理器編號(hào)范圍為0~15。
使用CP偽操作為協(xié)處理器定義一個(gè)方便記憶的名稱(chēng),可以使程序員更高效地編寫(xiě)代碼。
注意 | 協(xié)處理器寄存器的稱(chēng)不能被定義為p0~p15,這些名稱(chēng)已經(jīng)被匯編器預(yù)定義。 |
(3)示例
將協(xié)處理器6命名為Dmu。
DmuCP6
7.VFP寄存器名稱(chēng)定義偽操作DN/SN
(1)語(yǔ)法格式
DN偽操作為雙精度(double-precision)VFP寄存器定義名稱(chēng)。D0~D15是匯編器預(yù)先定義的,用戶(hù)不能使用。
SN偽操作為單精度(single-precision)VFP寄存器定義名稱(chēng)。S0~S31是匯編器預(yù)先定義的,用戶(hù)不能使用。
語(yǔ)法格式如下。
NameDNexpr
NameSNexpr
①Name
指定的VFP寄存器的名稱(chēng)。
注意 | 該名稱(chēng)不能和已經(jīng)定義寄存器或其他協(xié)處理器名稱(chēng)相同。 |
②expr
指定VFP寄存器編號(hào)。對(duì)于雙精度寄存器編號(hào)范圍為0~15;對(duì)于單精度寄存器編號(hào)范圍為0~31。
(2)示例
①將VFP雙精度寄存器6定義為energy。
energyDN6
②將VFP單精度寄存器16定義為mass。
massSN16
8.浮點(diǎn)寄存器名稱(chēng)定義偽操作FN
(1)語(yǔ)法格式
FN為一個(gè)FPA浮點(diǎn)寄存器定義名稱(chēng)。F0~F7是匯編器預(yù)先定義的,用戶(hù)不能使用。
注意 | FPA的使用在ARM公司新發(fā)布的編譯器RVCT中已不再支持。 |
語(yǔ)法格式如下。
NameFNexpr
①Name
指定的浮點(diǎn)寄存器的名稱(chēng)。
注意 | 該名稱(chēng)不能和已經(jīng)定義寄存器或其他協(xié)處理器名稱(chēng)相同。 |
②expr
指定浮點(diǎn)寄存器編號(hào)。編號(hào)范圍為0~7。
(2)示例
為浮點(diǎn)寄存器6指定名稱(chēng)為Energy。
EnergyFN6
評(píng)論