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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > ARM 的堆棧學習筆記

          ARM 的堆棧學習筆記

          作者: 時間:2016-10-15 來源:網絡 收藏

          以下是我在學習ARM指令中記錄的關于堆棧方面的知識:

          本文引用地址:http://www.ex-cimer.com/article/201610/307380.htm

          1、寄存器 R13 在 ARM 指令中常用作堆棧指針

          2、對于 R13 寄存器來說,它對應6個不同的物理寄存器,其中的一個是用戶模式與系統(tǒng)模式共用,另外5個物理寄存器對應于其他5種不同的運行模式。采用以下的記號來區(qū)分不同的物理寄存器:

          R13_

          其中,mode為以下幾種模式之一:usr、fiq、irq、svc、abt、und。

          3、寄存器R13在ARM指令中常用作堆棧指針,但這只是一種習慣用法,用戶也可使用其他的寄存器作為堆棧指針。而在Thumb指令集中,某些指令強制性的要求使用R13作為堆棧指針。由于的每種運行模式均有自己獨立的物理寄存器R13,在用戶的初始化部分,一般都要初始化每種模式下的R13,使其指向該運行模式的??臻g,這樣,當程序的運行進入異常模式時,可以將需要保護的寄存器放入R13所指向的堆棧,而當程序從異常模式返回時,則從對應的堆棧中恢復,采用這種方式可以保證異常發(fā)生后程序的正常執(zhí)行。

          4、有四種類型的堆棧:堆棧是一種數(shù)據結構,按先進后出(First In Last Out,F(xiàn)ILO)的方式工作,使用一個稱作堆棧指針的專用寄存器指示當前的操作位置,堆棧指針總是指向棧頂。

          當堆棧指針指向最后壓入堆棧的數(shù)據時,稱為滿堆棧(Full Stack),而當堆棧指針指向下一個將要放入數(shù)據的空位置時,稱為空堆棧(Empty Stack)。

          同時,根據堆棧的生成方式,又可以分為遞增堆棧(Ascending Stack)和遞減堆棧(DecendingStack),當堆棧由低地址向高地址生成時,稱為遞增堆棧,當堆棧由高地址向低地址生成時,稱為遞減堆棧。這樣就有四種類型的堆棧工作方式,ARM 微支持這四種類型的堆棧工作方式,即:

          ◎ Full descending 滿遞減堆棧

          堆棧首部是高地址,堆棧向低地址增長。棧指針總是指向堆棧最后一個元素(最后一個元素是最后壓入的數(shù)據)。

          ARM-Thumb過程調用標準和ARM、Thumb C/C++ 編譯器總是使用Full descending 類型堆棧。

          ◎ Full ascending 滿遞增堆棧

          堆棧首部是低地址,堆棧向高地址增長。棧指針總是指向堆棧最后一個元素(最后一個元素是最后壓入的數(shù)據)。

          ◎ Empty descending 空遞減堆棧

          堆棧首部是低地址,堆棧向高地址增長。棧指針總是指向下一個將要放入數(shù)據的空位置。

          ◎ Empty ascending 空遞增堆棧

          堆棧首部是高地址,堆棧向低地址增長。棧指針總是指向下一個將要放入數(shù)據的空位置。

          5、操作堆棧的匯編指令堆棧類型 入棧指令 出棧指令

          Full descending STMFD (STMDB) LDMFD (LDMIA)

          Full ascending STMFA (STMIB) LDMFA (LDMDA)

          Empty descending STMED (STMDA) LDMED (LDMIB)

          Empty ascending STMEA (STMIA) LDMEA (LDMDB)

          例子:

          STMFD r13!, {r0-r5} ; Push onto a Full Descending Stack

          LDMFD r13!, {r0-r5} ; Pop from a Full Descending Stack.



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();