ARM復(fù)習(xí)課后題問題詳解(完整版)_第1頁
ARM復(fù)習(xí)課后題問題詳解(完整版)_第2頁
ARM復(fù)習(xí)課后題問題詳解(完整版)_第3頁
ARM復(fù)習(xí)課后題問題詳解(完整版)_第4頁
ARM復(fù)習(xí)課后題問題詳解(完整版)_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

國嵌入式系統(tǒng)行業(yè)對嵌入式系統(tǒng)的定義是什么?如何理解答:以應(yīng)用為中心、以計算機(jī)技術(shù)為基礎(chǔ)、軟件硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計算機(jī)系統(tǒng)。從這個定義看以看出嵌入式系統(tǒng)是與應(yīng)用緊密結(jié)合的,它具有很強(qiáng)的專用性,必須結(jié)合實(shí)際系統(tǒng)要求進(jìn)行合理的裁剪利用。因此有人把嵌入式系統(tǒng)比作是一個針對特定的應(yīng)用而量身定做的專用計算機(jī)系統(tǒng)。當(dāng)前最常見的源碼開放的嵌入式操作系統(tǒng)有哪些,請舉出兩例,并分析其特點(diǎn)答:嵌入式linux和嵌入式實(shí)時操作系統(tǒng)uc/os-IILinux:(1) linux是源碼開放的,每一個技術(shù)細(xì)節(jié)都是透明的,易于裁剪定制。(2) 目前嵌入式linux已經(jīng)在多種嵌入式處理器芯片移植成功,有大量且不斷增加的開發(fā)工具,這些工具為嵌入式系統(tǒng)開發(fā)提供了良好的開發(fā)環(huán)境。3)Linux核小、功能強(qiáng)大、運(yùn)作穩(wěn)定、效率高。Ucos:1)源代碼公開2)可移植性。3)可固化4)可裁剪5)占先式6)多任務(wù)7)可確定性。8)系統(tǒng)服務(wù)第2章

ARM

技術(shù)與

ARM

體系結(jié)構(gòu)3. arm

處理器的工作模式有哪幾種,其中哪些為特權(quán)模式,哪些為異常模式,

并指出處理器在什么情況下進(jìn)入相應(yīng)的模式。答:ARM 處理器共有7種工作模式:用戶模式:非特權(quán)模式,也就是正常程序執(zhí)行的模式,大部分任務(wù)在這種模式下執(zhí)行。在用戶模式下,如果沒異常發(fā)生,不允許應(yīng)用程序自行改變處理器的工作模式,如果有異常發(fā)生,處理器會自動切換工作模式FIQ模式:也稱為快速中斷模式,支持高速數(shù)據(jù)傳輸和通道處理,當(dāng)一個高優(yōu)先級(fast)中斷產(chǎn)生時將會進(jìn)入這種模式。IRQ

模式:也稱為普通中斷模式,

:當(dāng)一個低優(yōu)先級中斷產(chǎn)生時將會進(jìn)入這種模式。在這模式下按中斷的處理器方式又分為向量中斷和非向量中斷兩種。通常的中斷處理都在IRQ模式下進(jìn)行。SVC

模式:稱之為管理模式,它是一種操作系統(tǒng)保護(hù)模式。當(dāng)復(fù)位或軟中斷指令執(zhí)行時處理器將進(jìn)入這種模式。中止模式:當(dāng)存取異常時將會進(jìn)入這種模式,用來處理存儲器故障、實(shí)現(xiàn)虛擬存儲或存儲保護(hù)。未定義指令異常模式: 當(dāng)執(zhí)行未定義指令時會進(jìn)入這種模式,主要是用來處理未定義的指令陷阱,支持硬件協(xié)處理器的軟件仿真,因?yàn)槲炊x指令多發(fā)生在對協(xié)處理器的操作上。系統(tǒng)模式:使用和User模式相同寄存器組的特權(quán)模式,用來運(yùn)行特權(quán)級的操作系統(tǒng)任務(wù)。在這 7種工作模式中,除了用戶模式以外,其他 6種處理器模式可以稱為特權(quán)模式,在這些模式下,程序可以訪問所有的系統(tǒng)資源,也可以任意地進(jìn)行處理器模式的切換。在這 6種特權(quán)模式中,除了系統(tǒng)模式外的其他 5種特權(quán)模式又稱為異常模式4.分析程序狀態(tài)寄存器( PSR)各位的功能描述,并說明 C、Z、N、V在什么情況下進(jìn)行置位和清零。答:PSR的具體格式為—溢出標(biāo)志位對于加/減法運(yùn)算指令,當(dāng)操作數(shù)和運(yùn)算結(jié)果為二進(jìn)制補(bǔ)碼表示的帶符號數(shù)時,V=1

表示符號位溢出,其他的指令通常不影響

V位。C—進(jìn)位或借位標(biāo)志位對于加法指令(包括比較指令 CMN),結(jié)果產(chǎn)生進(jìn)位,則

C=1,表示無符號數(shù)運(yùn)算發(fā)生上溢出,其他情況下 C=0;在減法指令中(包括比較指令 CMP),結(jié)果產(chǎn)生借位,則

C=0,表示無符號數(shù)運(yùn)算發(fā)生下溢出,其他情況下 C=1;對于包含移位操作的非加/減法運(yùn)算指令,C中包含最后一次溢出位的數(shù)值;對于其他非加/減法運(yùn)算指令,C位的值通常不受影響。Z—結(jié)果為0標(biāo)志位Z=1表示運(yùn)算結(jié)果是 0,Z=0表示運(yùn)算結(jié)果不是零;對于 CMP指令,Z=1表示進(jìn)行比較的兩個數(shù)大小相等。N—符號標(biāo)志位本位設(shè)置成當(dāng)前指令運(yùn)算結(jié)果的 bit[31]的值。當(dāng)兩個補(bǔ)碼表示有符號整數(shù)運(yùn)算時,N=1表示運(yùn)算的結(jié)果為負(fù)數(shù), N=0表示結(jié)果為正數(shù)或零。5.簡述 ARM 處理器異常處理和程序返回的過程。答:ARM在異常產(chǎn)生時會進(jìn)行以下操作:(1)將引起異常指令的下一條指令地址保存到新的異常模式的LR中,使異常處理程序執(zhí)行完后能根據(jù)LR中的值正確返回;2)將CPSR的容復(fù)制到新的異常模式下的SPSR中;3)根據(jù)異常類型將CPSR模式控制位強(qiáng)制設(shè)定為發(fā)生異常所對應(yīng)的模式值;4)強(qiáng)制PC指向相應(yīng)的異常向量地址。1)從SPSR_<mode>恢復(fù)CPSR;2)從LR_<mode>恢復(fù)PC。6.ARM 處理器字?jǐn)?shù)據(jù)的存儲格式有哪兩種?并指出這兩種格式的區(qū)別。答:1)小端存儲格式(Little-Endian)在小端存儲格式中,對于地址為A的字單元,其中字節(jié)單元由低位到高位字節(jié)地址順序?yàn)锳,A+1,A+2,A+3;對于地址為A的半字單元,其中字節(jié)單元由低位到高位字節(jié)地址順序?yàn)锳,A+1;2)大端存儲格式(Big-Endian)在大端存儲格式中,對于地址為A的字單元,其中字節(jié)單元由高位到低位字節(jié)地址順序?yàn)锳,A+1,A+2,A+3;對于地址為A的半字單元,其中字節(jié)單元由高位到低位字節(jié)地址順序?yàn)锳,A+1。第3章ARM指令集尋址方式3.在ARM 指令中,什么是合法的立即數(shù)?判斷下面各立即數(shù)是否合法,如果合法則寫出在指令中的編碼格式(也就是 8位常數(shù)和 4位的移位數(shù))。0x54300x1080x3040x5010xFB100000x3340000x3FC0000x1FE00000x55800000x7F8000x39C0000x1FE80000答:計算步驟:1)十六進(jìn)制立即數(shù)兩端0去掉2)展成二進(jìn)制3)連續(xù)偶數(shù)個0去掉,數(shù)字中間0不去掉4)剩下數(shù)字位數(shù)小于等于8可以,反之,不可以。5.ARM 數(shù)據(jù)處理指令具體的尋址方式有哪些,如果程序計數(shù)器 PC作為目標(biāo)寄存器,會產(chǎn)生什么結(jié)果?答:ARM數(shù)據(jù)處理指令尋址方式有 5種1)第二操作數(shù)為立即數(shù)2)第二操作數(shù)為寄存器3)第二操作數(shù)為寄存器移位方式,且移位的位數(shù)為一個4)第二操作數(shù)為寄存器移位方式,且移位數(shù)值放在寄存器中5)第二操作數(shù)為寄存器進(jìn)行 RRX移位得到如果程序計數(shù)器 PC作為目標(biāo)寄存器,會發(fā)生程序跳轉(zhuǎn)。

5位的立即數(shù)6.在

Load/Store

指令尋址中,字、無符號字節(jié)的

Load/Store

指令尋址和半字、有符號字節(jié)尋址,試分析它們之間的差別。答:字、無符號字節(jié)尋址:1)Addressing_mode中的偏移量為立即數(shù)2)Addressing_mode中的偏移量為寄存器的值3)Addressing_mode中的偏移量通過寄存器移位得到半字、有符號字節(jié)尋址:1)Addressing_mode中的偏移量為立即數(shù)2)Addressing_mode中的偏移量為寄存器的值從以上分析看出:差別就在于后者沒有第三項(xiàng)尋址方式。7.塊拷貝Load/Store指令在實(shí)現(xiàn)寄存器組和連續(xù)的存單元中數(shù)據(jù)傳遞時,地址的變化方式有哪幾種類型,并分析它們的地址變化情況。答:批量 Load/Store指令在實(shí)現(xiàn)寄存器組和連續(xù)的存單元中數(shù)據(jù)傳遞時,地址的變化方式(addr_mode)有以下4種類型:后增IA(IncrementAfter):每次數(shù)據(jù)傳送后地址加4;先增IB(IncrementBefore):每次數(shù)據(jù)傳送前地址加4;后減DA(DecrementAfter):每次數(shù)據(jù)傳送后地址減4;先減DB(DecrementBefore):每次數(shù)據(jù)傳送前地址減4。8.棧操作指令地址的變化方式有哪幾種類型,并分析它們的地址變化情況,從而得出棧操作指令尋址和塊拷貝 Load/Store 指令之間的對應(yīng)關(guān)系。答:四種類型的堆棧工作方式,即:滿遞增堆棧FA(EmptyAscending):堆棧指針指向最后壓入的數(shù)據(jù),且由低地址向高地址生成。滿遞減堆棧FD(FullDescending):堆棧指針指向最后壓入的數(shù)據(jù),且由高地址向低地址生成??者f增堆棧 EA(FullAscending):堆棧指針指向下一個將要放入數(shù)據(jù)的空位置,且由低地址向高地址生成??者f減堆棧 ED(EmptyDescending):堆棧指針指向下一個將要放入數(shù)據(jù)的空位置,且由高地址向低地址生成。棧操作指令尋址和塊拷貝Load/Store指令之間的對應(yīng)關(guān)系見表3-10。第4章ARM指令集系統(tǒng)分析下列每條語句的功能,并確定程序段所實(shí)現(xiàn)的操作。CMPR0,#0MOVEQR1,#0MOVGTR1 ,#1答:分析:當(dāng)R0等于0時,MOVEQ執(zhí)行,則R1等于0;當(dāng)R0等于正數(shù)時,MOVGT執(zhí)行,則R1等于1;此功能碼段可以判別R0中的值為正數(shù)還是0。5.請使用多種方法實(shí)現(xiàn)將字?jǐn)?shù)據(jù) 0xFFFFFFFF 送入寄存器R0。答:例如,MVNR0,#0或者:MOVR0,#0SUBR0,R0,#1還可以用其它運(yùn)算指令來實(shí)現(xiàn),讀者自行寫出。寫出下列ARM指令所實(shí)現(xiàn)操作:LDRR2,[R3,#-4]!LDRR0,[R0],R2LDRR1,[R3,R2,LSL#2]?。籐DRSBR0,[R2,#-2]!STRBR1,[R2,#0xA0]LDMIAR0,{R1,R2,R8}STMDBR0!,{R1-R5,R10,R11}解答:LDRR2,[R3,#-4]!將存儲器地址為R3-4的字?jǐn)?shù)據(jù)讀入R2,并將地址R3-4寫入R3LDRR0,[R0],R2將存儲器地址為R0的字?jǐn)?shù)據(jù)讀入R0,并將地址R0+R2寫入R0LDRR1,[R3,R2,LSL#2]!將存儲器地址為R3+R2*4的字?jǐn)?shù)據(jù)讀入R1,并將地址R3+R2*4寫入R3LDRSBR0,[R2,#-2]!將存儲器地址為R2-2的字節(jié)數(shù)據(jù)讀入R0的低8位,將R0的高24位用符號位擴(kuò)展,并將地址R2-2寫入R2STRBR1,[R2,#0xA0]將R0的低8位存入存儲器地址為R2+0xA0字節(jié)中LDMIAR0,{R1,R2,R8}將存單元R0所指向的地址單元以字為單位遞減方式讀取到R1,R2,R8中,低地址編號的字?jǐn)?shù)據(jù)存單元對應(yīng)低編號寄存器STMDBR0!{R1-R5,R10,R11}將R1-R5,R10,R11存儲到以R0為起始地址的遞減存中,最終R0指向存放R11的地址單元10.SWP指令的優(yōu)勢是什么 ?答:ARM 指令支持原子操作,主要是用來對信號量的操作,因?yàn)樾盘柫坎僮鞯囊笫亲髟硬僮?,即在一條指令中完成信號量的讀取和修改操作。SWP數(shù)據(jù)交換指令就能完成此功能,能在一條指令中實(shí)現(xiàn)存儲器和寄存器之間交換數(shù)據(jù)。11.如何用帶 PSR操作的批量字?jǐn)?shù)據(jù)加載指令實(shí)現(xiàn) IRQ 中斷的返回?答:在進(jìn)入 IRQ中斷處理子程序時,首先計算返回的地址,并保存相關(guān)的寄存器SUBR14,R14,#4STMFDR13!,{R0-R3,R12,LR}如果IRQ中斷處理程序返回到被中斷的進(jìn)程則執(zhí)行下面的指令。R0-R3及R12的值,將返回地址傳送到 PC中,并將SPSR_irq

該指令從數(shù)據(jù)棧中恢復(fù)值復(fù)制到CPSR中LDMFDR13!,{R0-R3,R12,PC}^用ARM匯編語言編寫代碼,實(shí)現(xiàn)將ARM處理器切換到用戶模式,并關(guān)閉中斷。.equUser_Mode,0x10.equMode_Mask0x1F.equNOINT,0xC0MRSR0,CPSR 讀CPSRBICR0,R0,#Mode_MaskORRR1,R0,#User_Mode|NOINT 修改MSRCPSR_cxsf,R1 進(jìn)入用戶模式第6章 ARM 匯編偽指令與偽操作在ARM匯編語言程序設(shè)計中,偽操作與偽指令的區(qū)別是什么?答:偽指令是ARM處理器支持的匯編語言程序里的特殊助記符, 它不在處理器運(yùn)行期間由機(jī)器執(zhí)行,只是在匯編時被合適的機(jī)器指令代替成 ARM或Thumb指令,從而實(shí)現(xiàn)真正的指令操作。偽操作是ARM匯編語言程序里的一些特殊的指令助記符, 其作用主要是為完成匯編程序做各種準(zhǔn)備工作,對源程序進(jìn)行匯編程序處理, 而不是在計算機(jī)運(yùn)行期間由處理器執(zhí)行。 也就是說,這些偽操作只是在匯編過程中起作用,一旦匯編結(jié)束,偽操作也就隨之消失。分析ARM匯編語言偽指令LDR、ADRL、ADR的匯編結(jié)果,說明它們之間的區(qū)別。答:LDR是大圍地址讀取偽指令。 LDR將一個32位的常數(shù)或者一個地址值讀取到寄存器中, 可以看作是加載寄存器的容。ADRL是中等圍地址讀取偽指令。 它將基于 PC相對偏移的地址值或基于寄存器相對偏移的地址值讀取到寄存器中。ADR是小圍地址讀取偽指令,它將基于 PC

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論