新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM微處理器的指令集概述一——ARM應(yīng)用系統(tǒng)開(kāi)發(fā)詳解筆記

ARM微處理器的指令集概述一——ARM應(yīng)用系統(tǒng)開(kāi)發(fā)詳解筆記

作者: 時(shí)間:2016-11-20 來(lái)源:網(wǎng)絡(luò) 收藏
ARM微處理器指令集概述

ARM指令集是加載/存儲(chǔ)型的,就是說(shuō)指令集僅僅能處理寄存器中的數(shù)據(jù),而且處理結(jié)果都要放回寄存器中,而對(duì)系統(tǒng)存儲(chǔ)器的訪問(wèn)則需要通過(guò)專(zhuān)門(mén)的加載/存儲(chǔ)指令來(lái)完成。

本文引用地址:http://butianyuan.cn/article/201611/318743.htm

ARM微處理器的指令集可以分為六大類(lèi)

跳轉(zhuǎn)指令、數(shù)據(jù)處理指令、程序狀態(tài)寄存器(PSR)處理指令、加載/存儲(chǔ)指令、協(xié)處理器指令和異常產(chǎn)生指令。

一 指令的條件域

當(dāng)處理器工作在ARM狀態(tài)時(shí),幾乎所有的指令均根據(jù)CPSR中條件碼的狀態(tài)和指令的條件域有條件的執(zhí)行。當(dāng)指令的執(zhí)行條件滿(mǎn)足時(shí),指令被執(zhí)行,否則指令被忽略。每一條ARM指令包含4位的條件碼,位于指令的最高4位[31:28]。條件碼共有16種,每種條件碼可用兩個(gè)字符表示,這兩個(gè)字符可以添加在指令助記符的后面和指令同時(shí)使用。
例如,跳轉(zhuǎn)指令B可以加上后綴EQ變?yōu)锽EQ表示“相等則跳轉(zhuǎn)”,即當(dāng)CPSR中的Z標(biāo)志置位時(shí)發(fā)生跳轉(zhuǎn)。

在16種條件標(biāo)志碼中,只有15種可以使用。

二 ARM 指令的尋址方式

立即尋址

立即尋址也叫立即數(shù)尋址,這是一種特殊的尋址方式,操作數(shù)本身就在指令中給出,只要取出指令也就取到了操作數(shù)。

寄存器尋址

寄存器尋址就是利用寄存器中的數(shù)值作為操作數(shù)

寄存器間接尋址

寄存器間接尋址就是以寄存器中的值作為操作數(shù)的地址,而操作數(shù)本身存放在存儲(chǔ)器中。

基址變址尋址

基址變址尋址就是將寄存器(該寄存器一般稱(chēng)作基址寄存器)的內(nèi)容與指令中給出的地址偏移量相加,從而得到一個(gè)操作數(shù)的有效地址。變址尋址方式常用于訪問(wèn)某基地址附近的地址單元。例:

LDR R0,[R1,#4] ;R0←[R1+4]
LDR R0,[R1,#4]! ;R0←[R1+4]、R1←R1+4
LDR R0,[R1] ,#4 ;R0←[R1]、R1←R1+4
LDR R0,[R1,R2] ;R0←[R1+R2]

多寄存器尋址

采用多寄存器尋址方式,一條指令可以完成多個(gè)寄存器值的傳送。這種尋址方式可以用一條指令完成傳送最多 16 個(gè)通用寄存器的值。例

LDMIA R0,{R1,R2,R3,R4}
;R1←[R0]
;R2←[R0+4]
;R3←[R0+8]
;R4←[R0+12]

相對(duì)尋址

與基址變址尋址方式相類(lèi)似,相對(duì)尋址以程序計(jì)數(shù)器 PC 的當(dāng)前值為基地址,指令中的地址標(biāo)號(hào)作為偏移量,將兩者相加之后得到操作數(shù)的有效地址。
BL NEXT ;跳轉(zhuǎn)到子程序 NEXT 處執(zhí)行

堆棧尋址

ARM 微處理器支持四種類(lèi)型的堆棧工作方式,即:
- 滿(mǎn)遞增堆棧:堆棧指針指向最后壓入的數(shù)據(jù),且由低地址向高地址生成。
- 滿(mǎn)遞減堆棧:堆棧指針指向最后壓入的數(shù)據(jù),且由高地址向低地址生成。
- 空遞增堆棧:堆棧指針指向下一個(gè)將要放入數(shù)據(jù)的空位置,且由低地址向高地址生成。
- 空遞減堆棧:堆棧指針指向下一個(gè)將要放入數(shù)據(jù)的空位置,且由高地址向低地址生成。



關(guān)鍵詞: ARM微處理器指令

評(píng)論


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

關(guān)閉