




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
3嵌入式ARM指令系統(tǒng)第章本章目標(biāo)了解ARM指令系統(tǒng)的特點(diǎn)掌握ARM指令的尋址方式及指令了解Thumb指令系統(tǒng)3.1ARM指令集概述
ARM指令的基本格式如下:3.1.1指令格式ARM指令集——指令格式<opcode>{<cond>}{S}<Rd>,<Rn>,{<operand2>}
其中<>號(hào)內(nèi)的項(xiàng)是必須的,{}號(hào)內(nèi)的項(xiàng)是可選的。各項(xiàng)的說明如下:opcode:指令助記符;Rd:目標(biāo)寄存器(操作數(shù)據(jù)的最終結(jié)果存放的寄存器); cond:執(zhí)行條件;Rn:第1個(gè)操作數(shù)的寄存器;S:它是標(biāo)記,是否影響/修改CPSR寄存器對(duì)應(yīng)位的值;operand2:第2個(gè)操作數(shù);ARM指令格式舉例:ARM指令:用黑色表示;條件碼:用藍(lán)色表示;標(biāo)記:用紅色表示;LDR R0,[R1];讀取R1地址上的存儲(chǔ)單元內(nèi)容,執(zhí)行條件AL;BEQ DATAEVEN;條件執(zhí)行分支指令,執(zhí)行條件EQ,即相等則跳轉(zhuǎn)到DATAEVEN;ADDS R2,R1,#1;加法指令,R2R1+1,影響/修改CPSR寄存器對(duì)應(yīng)C位的值;SUBNESR2,R1,#0x20;條件執(zhí)行的減法運(yùn)算,執(zhí)行條件NE,R1-0x20-->R2,影響CPSR寄存器;
ARM指令的基本格式如下:ARM指令集——第2個(gè)操作數(shù),使用的非常靈活<opcode>{<cond>}{S}<Rd>,<Rn>{,<operand2>}
靈活的使用第2個(gè)操作數(shù)“operand2”能夠提高代碼效率。它有如下的形式:#immed_8r——常數(shù)表達(dá)式,立即數(shù)(挺難理解);Rm——寄存器方式(操作數(shù)即為寄存器中的數(shù)值);Rm,shift——寄存器移位方式;ARM指令集——第2個(gè)操作數(shù)#immed_8r——常數(shù)表達(dá)式一個(gè)立即數(shù)必須用一個(gè)字節(jié)(8bit)可以描述完成該常數(shù)必須對(duì)應(yīng)8位位圖(pattern),即一個(gè)8位的常數(shù)通過循環(huán)右移偶數(shù)位得到,為合法常量。循環(huán)右移10位0x00000000000x00000000000x00000000000x00000000000x00000000000x80100000000x04000001008位常數(shù)0x1200010010ARM指令集——第2個(gè)操作數(shù)例如:MOV R0,#1;R0=1AND R1,R2,#0x0F;R2與0x0F,結(jié)果保存在R1中LDRR0,[R1],#-4;讀取R1地址上的存儲(chǔ)器單元內(nèi)容,
;且R1=R1-4如何判斷合法常量與非法常量?一個(gè)常數(shù)中的兩個(gè)“1”在8個(gè)比特中實(shí)現(xiàn),并且后面跟偶數(shù)個(gè)零(二進(jìn)制)合法常量0xFF、0x104、0xFF0、0xFF000、0xFF000000、0xF000000F非法常量:0x101、0x102、0xFF1、0xFF04,0xFF003、0xFFFFFFFFARM指令集——第2個(gè)操作數(shù)Rm——寄存器方式(可以實(shí)現(xiàn)復(fù)雜的立即數(shù)(非法))
在寄存器方式下,操作數(shù)即為寄存器中內(nèi)容的數(shù)值。例如:SUB R1,R1,R2;R1--R2R1MOV PC,R0;PC=R0,程序跳轉(zhuǎn)到指定地址LDRR0,[R1],-R2;讀取R1地址上的存儲(chǔ)器單元內(nèi)容
;并存入R0,且R1=R1-R2ARM指令集——第2個(gè)操作數(shù)Rm,shift——寄存器移位方式將寄存器的移位結(jié)果作為操作數(shù),但Rm值保持不變,移位方法如下:操作碼說明操作碼說明LSL#n邏輯左移n位(1≤n≤31)ASR#n算術(shù)右移n位(1≤n≤32)LSR#n邏輯右移n位(1≤n≤32)ROR#n循環(huán)右移n位(1≤n≤31)ASL#n算術(shù)左移n位(與LSL同義)RRX
帶擴(kuò)展的循環(huán)右移1位ARM指令集——第2個(gè)操作數(shù)0LSR移位操作:0ASR移位操作:ROR移位操作:RRX移位操作:每次只能移動(dòng)一位,把CPSR寄存器中的C/進(jìn)位位補(bǔ)充到最左邊CASL移位操作:空出的最低有效位用0填充空出的最高有效位用0填充算術(shù)移位的對(duì)象是有符號(hào)數(shù),移位過程中必須保持操作數(shù)的符號(hào)不變。即源操作數(shù)是正數(shù),則空出的最高有效位用0填充,如果是負(fù)數(shù),則用1填充。將寄存器的內(nèi)容循環(huán)右移1位,空位用原來的C標(biāo)志位填充。0ARM指令集——第2個(gè)操作數(shù)Rm,shift——寄存器移位方式例如:ADD R1,R1,R1,LSL#3 ;R1=R1+R1*8=9R1,即R1乘以9SUB R1,R1,R2,LSRR3 ;R1=R1-(R2/2R3)注意:ARM指令只會(huì)改變目標(biāo)寄存器中的內(nèi)容,而操作數(shù)寄存器中的內(nèi)容不會(huì)改變;錯(cuò)例:ADDR3,R7,#1023(十進(jìn)制);1023(0x3FF)不是一個(gè)循環(huán)移位的8位位圖SUBR11,R12,R3,LSL#32
;#32超出了LSL范圍MOVSR4,R4,RRX#3;RRX不需指定移位量,RRX總是移1位
ARM指令的基本格式如下:3.1.3條件碼ARM指令集——條件碼條件碼是在ARM指令執(zhí)行之前,進(jìn)行判斷的,只要符合條件,ARM指令才執(zhí)行<opcode>{<cond>}{S}<Rd>,<Rn>{,<operand2>}
使用條件碼“cond”可以實(shí)現(xiàn)高效的邏輯操作,提高代碼效率。所有的ARM指令都可以條件執(zhí)行,而Thumb指令只有B(跳轉(zhuǎn))指令具有條件執(zhí)行功能。如果指令不標(biāo)明條件代碼,將默認(rèn)為無條件(AL)執(zhí)行。操作碼條件助記符判斷的標(biāo)志含義0000EQZ=1相等0001NEZ=0不相等0010CS/HSC=1無符號(hào)數(shù)大于或等于0011CC/LOC=0無符號(hào)數(shù)小于0100MIN=1負(fù)數(shù)0101PLN=0正數(shù)或零0110VSV=1溢出0111VCV=0沒有溢出1000HIC=1,Z=0無符號(hào)數(shù)大于1001LSC=0,Z=1無符號(hào)數(shù)小于或等于1010GEN=V有符號(hào)數(shù)大于或等于
1011LTN!=V有符號(hào)數(shù)小于
1100GTZ=0,N=V有符號(hào)數(shù)大于
1101LEZ=1,N!=V有符號(hào)數(shù)小于或等于
1110AL任何無條件執(zhí)行
(指令默認(rèn)條件)1111NV任何從不執(zhí)行(不要使用)指令條件碼表ARM指令集——條件碼理解條件碼的含義,HI/LS都是條件碼C代碼:If(a>b) a++;Else b++;對(duì)應(yīng)的匯編代碼如下.其R0為a,R1為bCMP R0,R1 ;R0與R1比較ADDHI R0,R0,#1;若R0>R1,則R0=R0+1ADDLS R1,R1,#1;若R0≤R1,則R1=R1+1示例1:ARM指令集——條件碼C代碼:If(a!=10)&&(b!=20)a=a+b對(duì)應(yīng)的匯編代碼如下.其R0為a,R1為bCMP R0,#10;比較R0是否為10CMPNER1,#20;若R0不為10,則比較
;R1是否為20ADDNER0,R0,R1;若R0不為10且R1;不為20
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 收貨作業(yè)流程規(guī)范
- 12.3+實(shí)驗(yàn):電源電動(dòng)勢(shì)和內(nèi)阻的測(cè)量+課件+-2024-2025學(xué)年高一下學(xué)期物理人教版(2019)必修第三冊(cè)
- 初中創(chuàng)新實(shí)驗(yàn)說課課件
- Thaigranatumin-I-生命科學(xué)試劑-MCE
- 保護(hù)海洋課件小學(xué)生
- PROTAC-STING-degrader-3-生命科學(xué)試劑-MCE
- 開學(xué)第一課收心教育
- 老年護(hù)理噎嗆案例
- 蜂窩織炎護(hù)理課件
- 胃痛中醫(yī)內(nèi)科學(xué)
- 2025年西安市工業(yè)合作聯(lián)社下屬企業(yè)招聘考試試卷
- 托管回饋活動(dòng)方案
- 2025屆四川內(nèi)江中考數(shù)學(xué)試題【含答案】
- 北京市殯葬惠民政策及實(shí)施可行性報(bào)告
- 2025年國家公務(wù)員考試(行測(cè))經(jīng)典75道邏輯推理題(包過)(含答案)
- 高中生物自然選擇與適應(yīng)的形成課件-2024-2025學(xué)年高一下學(xué)期生物人教版必修2
- 2025年7月黑龍江高中學(xué)業(yè)水平合格考化學(xué)試卷試題(含答案詳解)
- 行政處罰法培訓(xùn)
- 耕地保護(hù)培訓(xùn)課件
- 2025年湖北省中考英語試卷真題(含答案解析)
- 2025至2030中國學(xué)生校服行業(yè)發(fā)展分析及投資前景與戰(zhàn)略規(guī)劃報(bào)告
評(píng)論
0/150
提交評(píng)論