課件案例教案_第1頁
課件案例教案_第2頁
課件案例教案_第3頁
課件案例教案_第4頁
課件案例教案_第5頁
已閱讀5頁,還剩115頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

ARMARM

”知知識 <opcode>{cond}{S}<Rd>,<Rn>,

R0,R1,R0,R0,R1,R2,LSRR1,知知講 講 <Rm>, <Rm>, <Rm>, <Rm>,LSR<Rm>,ASR<Rm>,ASR<Rm>,ROR<Rm>,ROR<Rm>,

寄存Rm邏輯左移shift_immRm邏輯左移RsRm算術(shù)右移shift_immRm算術(shù)右移RsRm循環(huán)右移shift_immRm循環(huán)右移RsRm擴展的循環(huán)右移一知知識講0 0000 000

00 CC知shifter_operand知識講 MOVR0,#0xFFADDR1,R2,#2CMPR1,#0x知shifter_operand為立即數(shù)舉知 8 Rt1, Rt1, 58位常01001000000000000000000000000000 0000000000000000知 講解<Rm>,<Rm>,<Rm>,

說Rm邏輯左移shift_immRm邏輯左移RsRm邏輯右移shift_imm<Rm>,LSR<Rm>,ASR<Rm>,ASR<Rm>,ROR<Rm>,ROR<Rm>,

Rm邏輯右移RsRm算術(shù)右移shift_immRm算術(shù)右移RsRm擴展的循環(huán)右移一知shifter_operand為寄存器丼知識講解MOV R1,

ADDR0,R1,R2 識 識ADDR1,R2,R3,LSL#3SUBR1,R2,R3,LSR

”知知識 MOV{cond}{S}<Rd>,:立即數(shù) R0, R0,N=

@CPSR=SPSRZ=ifRd==0then1else0C=shifter_carry_out, R3,R4,LSL R0, PC,知知識 MVN{cond}{S}<Rd>, R0,#0x80 PC,R0 R0,R1N=Z=ifRd==0then1else0C=shifter_carry_out, R3,R4,LSL代碼踐 碼踐 R0,課 R0,”知知識解 解ADD{cond}{S}<Rd>,<Rn>,

R0,R1,#0x80R0,R1,R3R0,R1,R2N=Z=ifRd==0then1elseC=CarryFrom(Rn+V=OverflowFrom(Rn+ PC,R1,代碼踐 碼踐 R0,R1, R0=R1+練 R0,R1,練 R0=R1+ R0,R2,R3,LSLR0=R2+(R3<<知知識 ADC{cond}{S}<Rd>,<Rn>,

R0,R1,#0x80R0,R1,R3R0,R1,R2N=Z=ifRd==0then1elseC=CarryFrom(Rn+shifter_operand+CV=OverflowFrom(Rn+shifter_operand+C PC,R1,代實踐 ADC指令應(yīng)用丼實踐堂 堂習(xí) 習(xí)知知識解 解SUB{cond}{S}<Rd>,<Rn>,

R0,R1,#0x80R0,R1,R3R0,R1,R2N=Z=ifRd==0then1elseC=NOTBorrowFrom(Rn-V=OverflowFrom(Rn- PC,R14,代實踐 實踐 R0,R1, R0,R1, R0,R2,R3,LSL R1,R2,R3 PC,R14,#4知知識 SBC{cond}{S}<Rd>,<Rn>, R0,R1, R0,R1, R0,R1,N=Z=ifRd==0then1elseV=OverflowFrom(Rn-shifter_operand–NOT(C PC,R1,代碼踐 SBC指令應(yīng)用丼碼踐堂 堂習(xí) 習(xí)知知識 指令格式 RSB{cond}{S}<Rd>,<Rn>, R0,R1, R0,R1, R0,R1,N=Z=ifRd==0then1elseC=NOTBorrowFrom(shifter_operand–V=OverflowFrom(shifter_operand– PC,R1, R3,R1,R3=- R1,R2,R2,LSL實碼實踐踐知知識解 解RSC{cond}{S}<Rd>,<Rn>,E

R0,R1,#0x80R0,R1,R3R0,R1,R2N=Z=ifRd==0then1elseV=OverflowFrom(shifter_operand–Rn PC,R1,代實踐 實踐堂 堂 習(xí)““” 位運算指識解 解AND{cond}{S}Rd,Rn,Rd←Rn&ORR{cond}{S}Rd,Rn,Rd←Rn|EOR{cond}{S}Rd,Rn,Rd←Rn^BIC{cond}{S}Rd,Rn,Rd←Rn&知知識解 解AND{<cond>}{S}<Rd>,<Rn>,

R0,R1,000000010100111R0,R1,N=Z=ifRd==0then1elseC=碼實 碼實踐ANDANDR0,R1,#0x80ANDSR0,R1,R2,LSL#1ANDEQR3,R4,#0xFF知知識解 解ORR{<cond>}{S}<Rd>,<Rn>,

結(jié)果000011結(jié)果000011101111Z=ifZ=ifRd==0then1elseC= PC,R1,代實踐 ORR指令使用丼實踐 R0,R1,#1 R0,R1, R0,R1,R2,LSL知知識解 解EOR{<cond>}{S}<Rd>,<Rn>,

結(jié)果000011結(jié)果000011101110N=Z=ifRd==0then1elseC= PC,R1,碼 EOR使用丼碼 R0,R0, R0,R0, R0,R0,知知識解 解BIC{cond}{S}<Rd>,<Rn>,

R0,R1,結(jié)果結(jié)果000010101110R0,R1,N=Z=ifRd==0then1elseC=代實踐 BIC指令使用丼實踐 R0,R0, ” 比較測試指識解 解CMP{cond}Rn,CMN{cond}Rn,TST{cond}Rn,TEQ{cond}Rn,知知識解 解CMP{cond}<Rn>,

R0,R0,Z=ifALU_out==0then1else代實 CMP指令使用丼代實踐 r1, r0, 知知識解 解CMN{cond}<Rn>,

R0,R0,Z=ifALU_out==0then1elseC=CarryFrom(Rn+V=OverflowFrom(Rn+碼 CMN使用丼碼實踐

知知識解 解TST{cond}Rn,

R0,R0,Z=ifALU_out==0then1else0C=shifter_carry_out碼 TST指令使用丼碼實踐 R0,#0x1 知知識解 解TEQ{cond}<Rn>,

R0,R0,Z=ifALU_out==0then1elseC=碼 TEQ指令使用丼碼實 碼 最大公約數(shù)求碼實 課 習(xí) 習(xí)ARM加載 ” ARM加載 識入 入 ARM加載 識解 加 指令包解 知知識解 指令語法格 說解LDR{cond}Rd,addressing LDR{cond}BRd,addressing Rd, LDR{cond}SBRd, LDR{cond}SHRd, 單寄存 指指令指令語法說STR{cond}Rd, Rd, Rd,識講 識講 LDR/LDRB:從內(nèi)存 一個字戒字節(jié)數(shù)據(jù)存入寄存器STR/STRB:將寄存器中的一個字戒字節(jié)數(shù)據(jù)保存到內(nèi)存 Rd Rd, Rd, Rd,識講 加載/指令地址模式識講地址模任一的通寄存

立即(12位

寄存 寄存器移識講 加 地址模識講 1.零偏LDRR0,[<Rn>,#+/-LDRLDRR0,[R1,#-[<Rn>,+/-LDRR0,[R1,LDRR0,[R1,-

;R0<-[R1–;R0<-[<Rn>,+/-<Rm>,<shift>LDRR0,[R1,R2,LSL [<Rn>,#+/-LDRR0,[R1, ;R0<-[R1+0x8]注:先索引(前變址識講 加 地址模識講 6.[<Rn>,+/-LDRR0,[R1,R2] ;R0<- [<Rn>,+/-<Rm>,<shift>LDRR0,[R1,R2,LSL#2]!;R0<- [<Rn>],#+/-LDRR0,[R1], ;R0=<-[R1][<Rn>],+/-LDRR0,[R1], ;R0=<-[R1][<Rn>],+/-<Rm>,<shift>LDRR0,[R1],R2,LSL ;R0=<-[R1]注:先索引(前變址)、后索引(后變址 識 先索引:STRr0,[r1, 解

更新基址寄存器時使STR后索引:STRr0,[r1],

識講 識講 R1,

Rd, [R0,V5orNot,PC=LDRBR1,[R2], R1,[PC, R1,[R2,R3,LSL R1,[R2, R0,[R0, 識講 識講 Rd,<地址模式示例STR R1,[R2]STRR1,[R2],#1 R1,[R2,STRB [R1,R2,ASRSTREQB [R1,R2,LSL [R0,[PC,8 R0,[R0, 識講 加 指識講 半字和有符號字節(jié)加載/指LDR{cond}SBRd,<地址模式>LDR{cond}HRd,<地址模式>STR{cond}HRd,<地址模式> 知知講 語法格講 LDR{cond}HRd,<地址模式>LDR{cond}SHRd,<地址模式>LDR{cond}SBRd,<地址模式>使用示 R1, R8,[R3,#2] R12,[R13,#-6] R7,[R6,#-1]! R3,[R9],LDRSBR1,[R2],

[R0], PC, R0,[R0], 知 指知識解 解STR{cond}HRd

R1,R8,[R3, R12,[R13,#-

R7,[R6,#-R3,[R9],STRHR1,[R2],

PC, R0,[R0],#4 R7,[R6,#- @“””多寄存器加 指知 多寄存器加載指令解 LDM{cond}{addressing_mode}Rb{!},<Reglist解多寄存 指令STM{cond}addressing_mode}RbReglist^}cond:條件域LDMIA/STMIALDMIB/STMIBLDMDB/Rb:基址寄存!: 更新基址寄存

IncrementAfter(先操作,后增加)IncrementBefore(先增加,后操作)DecrementAfter(先操作,后遞減)DecrementBefore(先遞減,后操作)Reglist:源/目標(biāo)寄存器列表(可以是16個寄存器的任何子集 有兩種作用 模式下使用用戶模式下的寄存器 多寄存 講 講 LDMIA/STMIA后增加LDMIB/STMIB先增加LDMDA/STMDALDMxxr10,STMxxr10,(Rb)

解 解 R0!,{R1-R0,{R1-R3,@xSP!,{R1-R3,@xR0,{R0-R15,R0!,{R0-@xRn 碼踐實STMIA踐

R0!,{R1-SP!,{R1-R3,R0,{R1-R3,R0,{R0-R0!,{R0-

@x

R15, @ 內(nèi)存塊拷貝碼實踐使用單寄存器加載指令實現(xiàn);r8源數(shù)據(jù)起始地址;r9源數(shù)據(jù)結(jié)束地址堂 ;r10目標(biāo)地堂 ldrr0,[r8],#4strr0,[r10],#4cmpr8,r9blt每個循環(huán)

碼實 ;r8源數(shù)據(jù)起始地址r9源數(shù)據(jù)結(jié)束地址;前提R9-r88 ;r10目標(biāo)地練 練

r8!,{r0-r7}stmiar10!,{r0-r7}cmpr8,

“ARM“”知知識 Fullstacks(滿棧Emptystacks(空棧 ED(EmptyDescending) EA(EmptyAscending)知ARM知識講

sp!,sp!,

棧操作指 講 (Push)FullDescendingstack[多寄存 - FullDescendingstack多寄存器加STMFDsp!,{r4-r7, Old

器頂

LDMFDsp!,{r4-r7, ”知知識 cond條件碼Psr程序狀態(tài)寄存器(CPSR,SPSR)MRS{<cond>}<Rd>,CPSRMRS{<cond>}<Rd>,SPSR R0, R1, MSR知 解 MSR{<cond>}CPSR_<fields>,#<immediate_8>MSR{<cond>}CPSR_<fields>,<Rm>MSR{<cond>}SPSR_<fields>,#<immediate_8>MSR{<cond>}SPSR_<fields>,<Rm>解NZNZCQJUndefindITfsxc

24 65 c控制 x擴展 s狀態(tài) 字節(jié)f標(biāo)志 字節(jié)代 代實踐 實踐 R0,CPSR R0,R0,#0xF CPSR_f,R0課堂 R0, R0,R0, R0, R0,R0,#0x1F R0,R0,#0x11 CPSR_c,R0 CPSR_c,

@Readthe@CleartheN,Z,CandV@Updatetheflagbitsinthe@N,Z,CandVflagsnowall@Readthe@Settheinterruptdisable@UpdatethecontrolbitsintheCPSR@interrupts(IRQ)nowdisabled@ReadtheCPSR@Clearthemode@SetthemodebitstoFIQ@Updatethecontrolbitsinthe@nowinFIQARM寄存器到協(xié)處理器識 識講 MCR{cond}<coproc>,<opcode_1>,<Rd>,<CRn>, >{, p15,0,r0,c1,c0,;ARMregistertransfertoCoproc;opcode1=0,opcode2=;ARMsourceregister=;coprocdestregistersare1and知ARMCORTEX-A8知知協(xié)處理器寄存器到ARM寄存知講 講 MRC{cond}<coproc>,<opcode_1>,<Rd>,<CRn>, >{, p15,0,R0,c1,c0,;Coproc15transfertoARM;opcode1=0,opcode2=;ARMdestinationregister=; sourceregistersare1and知MRC&MCR知識解 p15,0,r0,c1,c0,解r0,r0,@clearbits13(--V-r0,r0,@clearbits2:0(-r0,r0,@setbit1(--A-)r0,r0,p15,0,r0,c1,c0,@setbit12(Z---)“ARM“” 識解 解 小范圍地址加載偽指令識 語法格 ADR{cond}register, :條件 register:標(biāo)寄存器,如:R0expr:地址表達式(相對于pc戒寄存器加載地址范地址字對齊時1020地址非字對齊時:+/-示

R1,0x20R1,R0,0x64R0, 識 語法格識

知知識解 解

R0,.wordLDRpc,知知講 講

.wordLDRpc, 知知識 UARM” GNUARM匯編語法格識解 解instruction:指令 pseudo-instruction:偽指令 movr1 GNUARM匯編示識例 例.global r0,r0,movpc,

識 GNUARM匯編偽操識解 解符號偽操作 符號定義偽操識解 解 symbol, expr表示數(shù)字常量戒程序中的標(biāo)號。 TEST_NUM, 符號定義偽操識解 解

符號定義偽操識解 解 symbol為 的外部變量名示例 知知識解 解 exprexpr 數(shù)據(jù)定義偽操識解 解

expr{,exprexpr{,exprexpr號 數(shù)據(jù)定義偽操識解 解

expr{,exprexpr{,exprexpr{,expr 數(shù)據(jù)定義偽操識解 解

expr{,exprexpr{,exprexpr{,expr 數(shù)據(jù)定義偽操識解 解

size{,size{, 識 匯編與反匯編代碼控制偽操識講 .code.code 匯編與反匯編代碼控制偽操識解 解.section<section_name>flagsELFa可加載段w可寫x可執(zhí)行段 匯編與反匯編代碼控制偽操識解 解知知識例 例.globalsubr0,r0,movpc,

代實踐 實踐 堂“”GNUARM匯編不“” ARMC/C++和匯編混合編識解 解可實現(xiàn)在c 識講 識講 解解寄存必須ScratchStackPointerLinkRegisterProgram

ARM-ThumbProcedureStandardorATPCS(orCPSR如果RWPI選項有效,作為棧 如果軟件堆棧檢

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論