- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 ARM微處理器的指令集;大綱;大綱;本章將介紹ARM指令集以及各類指令對應的定址方式。而對於Thumb指令集我們稍微地加以介紹。通過對本章的閱讀,希望讀者能瞭解ARM微處理器所支援的指令集及具體的使用方法。
以下,在本章節中,我們將敘述下列的主要內容:
ARM指令集與Thumb指令集概述。
ARM指令集的分類與具體應用。
Thumb指令集簡介及應用場合。;ARM微處理器的指令集是以載入/存回(Load/Store)為基礎的,也即指令集僅能處理暫存器中的資料,而且處理結果都要放回暫存器中。因此,對系統記憶體的存取則需要通過專用的載入/存回指令來完成。因此,讀者需對載入與存回的觀念相當清楚。
ARM微處理器的指令集可以分為跳躍指令、資料處理指令、程式狀態暫存器(PSR)處理指令、載入/存回指令、協同處理器指令和例外事件產生指令六大類,具體的指令及功能(下表中指令為基本ARM指令,不包括衍生的ARM指令)。;當處理器工作在ARM狀態時,幾乎所有的指令均根據CPSR中條件欄位的各位元狀態和指令的條件區域有條件的執行。當指令的執行條件滿足時,指令被執行,否則指令就被忽略。
指令的幾個重點:
所有的ARM指令均包含一個可選擇的條件碼,以{cond}來表示
只有滿足CPSR的條件欄位所指定的條件時,帶條件的程式碼才可執行
;P-*/67;大綱;所謂的定址方式就是微處理器根據指令中所給予的位址訊息來尋找出實體位址的方式。
目前ARM指令系統支援如下幾種常見的定址方式:
立即定址
暫存器間接定址
基底定址
相對定址
多暫存器定址
堆疊定址
;立即定址,這是一種特殊的定址方式,運算元本身就在指令中直接加以設定,只要取出指令也就取到了運算元。這個運算元被稱為立即數值,因此其對應的定址方式也就叫做立即定址。例如,以下所示的指令:
ADD R3,R3,#1 ;R3←R3+1
AND R8,R7,#ff ;R8←R7[7:0]
在以上兩個指令中,第二個來源運算元即為立即數值,並要求以“#”為首碼。對於以十六進制表示的立即數值,還要求在“#”後加上“0x”或“”。第一個指令是完成R3暫存器的內容加1,然後將結果放回R3中。而第2個指令則是將32-bit的R7取其低8-bit的數值,也即是作AND邏輯運算,然後將結果傳送至R8中。;暫存器定址就是利用暫存器中的數值作為運算元,這種定址方式是各類微處理器經常採用的一種方式,也是一種執行效率較高的定址方式。如下,所示的指令:
ADD R0,R1,R2 ;R0←R1+R2
該指令的執行效果是將暫存器R1和R2的內容相加,其結果存放在暫存器R0中。;基底定址就是將基底暫存器的內容與指令中所給予的位址偏移量加以相加,並進而得到一個運算元的有效位址。
基底定址方式常用於存取某基底位址附近的記憶體資料,這包含了基底加上偏移量,以及基底加上索引值等來定址的方式。
基底加上偏移量所定址之用的基底暫存器所包含的並非是正確的位址。這基底暫存器需加上或是減掉最大達4KB的偏移量來計算出所要存取的位址。例如,以下所列的指令:
LDR R0,[R1,#4] ;R0←[R1+4]
;相對定址是以程式計數器PC的目前數值作為基底位址,指令中的位址標號作為偏移量,而將兩者相加之後可以得到有效位址。
以下所列的程式段落完成了副程式的跳躍與返回。其中,跳躍指令BL採用了相對定址方式:
BL NEXT ;跳躍到副程式NEXT處執行
……
NEXT
……
MOV PC,LR ;從副程式返回;多暫存器定址,一個指令可以完成多個暫存器值的傳送。這種定址方式可以用一個指令完成傳送最多16個通用暫存器的值。例如,以下指令:
LDMIA R0,{R1,R2,R3,R4} ;R1←[R0]
;R2←[R0+4]
;R3←[R0+8]
;R4←[R0+12]
該指令的尾碼IA表示在每次執行完載入/存回操作後,R0按字元組長度增加。
上敘例子可將連續記憶體單元的數值傳送到R1~R4。;遞增堆疊(Ascending Stack):堆疊由低位址向高位址生長
遞減堆疊(Decending Stack):當堆疊由高位址向低位址生長
ARM微處理器支援這四種類型的堆疊工作方式,即:
滿遞增堆疊:堆疊指標指向最後填入的資料,且由低位址向高位址生長。
滿遞減堆疊:堆疊指標指向最後填入的資料,且由高位址向低位址生長。
空遞增堆疊:堆疊指標指向下一個將要放入資料的空位置,且由低位址向高地址生長。
空遞減堆疊:堆疊指標指向下一個將要放入資料的空位置,且由高位址向低地址生長。;大綱;跳躍指令用於實現程式流程的跳躍,在ARM程式中有兩種方法可以實現程式流程的跳躍:
使用特定的跳躍指令。
直接向
您可能关注的文档
最近下载
- 智慧水务中智慧水厂建设的探讨(29页 PPT).pptx VIP
- 8《黄山奇石》课件(共28张PPT)(内嵌视频+音频).pptx VIP
- 在线网课学习课堂《高级医学英语(首都医大 )》单元测试考核答案.pdf VIP
- 2025年宁夏回族自治区畜牧业“十五五”发展规划.docx
- 建筑防火通用规范GB55037-2022电气专业解读PPT.pptx VIP
- 发现-研究-反思-改进-总结——行动研究的一般过程.ppt VIP
- 迅达电梯3300电气原理图纸(中文精简版).pdf
- 国企混改合资协议书.docx VIP
- S7-200-SMART-PID-Control专题培训课件.pptx VIP
- 苏 J9501 工程做法-标准图集.docx VIP
文档评论(0)