<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM 關(guān)鍵幾個(gè)寄存器

          ARM 關(guān)鍵幾個(gè)寄存器

          作者: 時(shí)間:2016-11-20 來源:網(wǎng)絡(luò) 收藏



          圖中縮寫如下:

          本文引用地址:http://www.ex-cimer.com/article/201611/318801.htm
          R:Register;寄存器PC:Program Counter;程序計(jì)數(shù)器CPSR:Current Program Status Register;當(dāng)前程序狀態(tài)寄存器SPSR:Saved Program Status Register;保存的程序狀態(tài)寄存器SP:Stack Pointer;數(shù)據(jù)棧指針LR:Link Register;連接寄存器SB:靜態(tài)基址寄存器SL:數(shù)據(jù)棧限制指針FP:幀指針I(yè)P:Intra-Procedure-call Scratch Register;內(nèi)部程序調(diào)用暫存寄存器

          ARM共有37個(gè)寄存器,可以工作在7種不同的模式。以下根據(jù)上圖進(jìn)行分類的說明:

          未分組寄存器r0-r7為所有模式共用,共8個(gè)。分組寄存器中r8-r12,快速中斷模式有自己的一組寄存器,其他模式共用,所以有10個(gè)。分組寄存器中r13,r14,除了用戶模式和系統(tǒng)模式共用外,其他模式各一組,所以共有2*7 - 2 = 12個(gè)。r15和CPSR共用,共2個(gè);SPSR除了用戶模式和系統(tǒng)模式?jīng)]有外,其他模式各一個(gè),共5個(gè)。

          所以總數(shù)為8+10+12+2+5 = 37個(gè)。與此對(duì)應(yīng)的匯編名稱表明了它們通常的約定用法。

          1. PC(程序計(jì)數(shù)器) = windows 中 EIP

          解析:
          處理器要執(zhí)行的程序(指令序列)都是以二進(jìn)制代碼序列方式預(yù)存儲(chǔ)在計(jì)算機(jī)的存儲(chǔ)器中,處理器將這些代碼逐條
          地取到處理器中再譯碼、執(zhí)行,以完成整個(gè)程序的執(zhí)行。為了保證程序能夠連續(xù)地執(zhí)行下去,CPU必須具
          有某些手段來確定下一條取指指令的地址.程序計(jì)數(shù)器(PC)正是起到這種作用,所以通常又稱之為‘指令計(jì)數(shù)器’
          。CPU總是按照PC的指向?qū)χ噶钚蛄羞M(jìn)行取指、譯碼和執(zhí)行,也就是說,最終是PC 決定了程序運(yùn)行流向。故而,程
          序計(jì)數(shù)器(PC )屬于特別功能寄存器范疇,不能自由地用于存儲(chǔ)其他運(yùn)算數(shù)據(jù).

          在程序開始執(zhí)行前,將程序指令序列的起始地址,即程序的第一條指令所在的內(nèi)存單元地址送入PC,CPU 按照 PC
          的指示從內(nèi)存讀取第一條指令(取指)。當(dāng)執(zhí)行指令時(shí),CPU自動(dòng)地修改PC 的內(nèi)容,即每執(zhí)行一條指令PC增加一個(gè)
          量,這個(gè)量等于指令所含的字節(jié)數(shù)(指令字節(jié)數(shù)),使 PC總是指向下一條將要取指的指令地址。由于大多數(shù)指令都
          是按順序來執(zhí)行的,所以修改PC 的過程通常只是簡(jiǎn)單的對(duì)PC 加“指令字節(jié)數(shù)”。
          當(dāng)程序轉(zhuǎn)移時(shí),轉(zhuǎn)移指令執(zhí)行的最終結(jié)果就是要改變PC的值,此PC值就是轉(zhuǎn)去的目標(biāo)地址。處理器總是按照PC
          指向取指、譯碼、執(zhí)行,以此實(shí)現(xiàn)了程序轉(zhuǎn)移。

          2.堆棧指針寄存器 SP (寄存器 R13)

          ARM處理器中通常將寄存器R13作為堆棧指針(SP)。ARM處理器針對(duì)不同的模式,共有 6 個(gè)堆棧指針(SP),其中
          用戶模式和系統(tǒng)模式共用一個(gè)SP,每種異常模式都有各自專用的R13寄存器(SP)。它們通常指向各模式所對(duì)應(yīng)的專
          用堆棧,也就是ARM處理器允許用戶程序有六個(gè)不同的堆??臻g,ARM處理器中的R13被用作SP。當(dāng)不使用堆棧時(shí),
          R13 也可以用做通用數(shù)據(jù)寄存器.


          由于處理器的每種運(yùn)行模式均有自己獨(dú)立的物理寄存器R13,在用戶應(yīng)用程序的初始化部分,一般都要初始化每種模
          式下的R13,使其指向該運(yùn)行模式的??臻g。這樣,當(dāng)程序的運(yùn)行進(jìn)入異常模式時(shí),可以將需要保護(hù)的寄存器放入R
          13所指向的堆棧,而當(dāng)程序從異常模式返回時(shí),則從對(duì)應(yīng)的堆棧中恢復(fù),采用這種方式可以保證異常發(fā)生后程序的
          正常執(zhí)行。


          3.R14稱為子程序鏈接寄存器LR(Link Register)

          當(dāng)執(zhí)行子程序調(diào)用指令(BL)時(shí),R14可得到R15(程序計(jì)數(shù)器PC)的備
          份.在每一種運(yùn)行模式下,都可用R14保存子程序的返回地址,當(dāng)用BL或BLX指令調(diào)用子程序時(shí),將PC的當(dāng)前值給
          R14,執(zhí)行完子程序后,又將R14的值回PC,即可完成子程序的調(diào)用返回。以上的描述可用指令完成。
          執(zhí)行以下任意一條指令:
          MOV PC,LR
          BX LR
          在子程序入口處使用以下指令將R14存入堆棧:
          STMFD SP!,{,LR}
          對(duì)應(yīng)的,使用以下指令可以完成子程序返回:
          LDMFD SP!,{,PC}
          R14也可作為通用寄存器。

          4. PSR 寄存器

          條件碼標(biāo)志(Condition Code Flags)
          N、Z、C、V均為條件碼標(biāo)志位。它們的內(nèi)容可被算術(shù)或邏輯運(yùn)算的結(jié)果所改變,并且可以決定某條指令是否
          被執(zhí)行。
          在ARM狀態(tài)下,絕大多數(shù)的指令都是有條件執(zhí)行的。
          在Thumb狀態(tài)下,僅有分支指令是有條件執(zhí)行的。

          N Negative 如果結(jié)果是負(fù)數(shù)則置位 當(dāng)用補(bǔ)碼表示的帶符號(hào)數(shù)進(jìn)行運(yùn)算時(shí),N=1表示運(yùn)算的結(jié)果為負(fù)數(shù);N=0表示運(yùn)算的結(jié)果是正數(shù)或零。
          Z Zero 如果結(jié)果是零則置位 Z=1表示運(yùn)算的結(jié)果為零;Z=0表示運(yùn)算的結(jié)果不為零。
          C Carry 如果發(fā)生進(jìn)位則置位 有4種方法影響C的值:
          l 加法運(yùn)算:當(dāng)運(yùn)算結(jié)果產(chǎn)生了進(jìn)位時(shí)(無符號(hào)數(shù)溢出),C=1,否則C=0。
          2 減法運(yùn)算(包括比較指令CMP):當(dāng)運(yùn)算時(shí)產(chǎn)生了借位(無符號(hào)數(shù)溢出)時(shí),C=0,否則C=1。
          3 對(duì)于包含移位操作的非加/減運(yùn)算指令,C為移出值的最后一位。
          4 對(duì)于其他的非加/減運(yùn)算指令,C的值通常不改變。

          V Overflow 如果發(fā)生溢出則置位 有2種方法設(shè)置V的值:
          l 對(duì)于加/減法運(yùn)算指令,當(dāng)操作數(shù)和運(yùn)算結(jié)果為二進(jìn)制的補(bǔ)碼表示的帶符號(hào)數(shù)時(shí),V=1表示符號(hào)位溢出。
          2 對(duì)于其它的非加/減法運(yùn)算指令,V的值通常不改變。
          I IRQ 中斷禁用
          F FIQ 快速中斷禁用
          T 工作狀態(tài)位,1為Thumb;0為ARM



          關(guān)鍵詞: ARM寄存

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();