<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > GNU ARM匯編--(三)ARM處理器的基本原則

GNU ARM匯編--(三)ARM處理器的基本原則

作者: 時(shí)間:2016-11-26 來(lái)源:網(wǎng)絡(luò ) 收藏

除了user模式,其它模式都可以通過(guò)直接寫(xiě)cpsr的模式位來(lái)改變處理器模式.當然,在異?;蛘咧袛嗟絹?lái)時(shí),硬件會(huì )自動(dòng)切換模式.下類(lèi)異常和中斷會(huì )引起模式切換:

reset,irq,fiq,swi,data abort,prefetch abort和undefined instruction.

處理器模式:

需要注意的是:通過(guò)直接寫(xiě)cpsr來(lái)改變模式的方法不會(huì )將cpsr拷貝到spsr.只有在異?;蛑袛喟l(fā)生時(shí)cpsr的值才會(huì )保存.

當ARM核上電時(shí),處于svc特權模式.從特權模式開(kāi)始是有用的:初始化代碼完全控制cpsr來(lái)建立其他模式的堆棧.

cpsr中的bit T是表明指令簇用的是ARM指令集還是thumb指令集.T為1表示thumb指令集,T為0表示ARM指令集.

ARM指令集和thumb指令集的特性:

中斷屏蔽位:

中斷屏蔽位用來(lái)屏蔽處理器的特殊中斷請求.在A(yíng)RM核中有兩種級別的中斷請求:irq和fiq.

cpsr中的中斷屏蔽位是第7位和第6位(I和F),當I或F設為1時(shí)irq或fiq就被屏蔽了.

condtion flags:

condition flags可以被比較操作和帶S后綴的ALU操作來(lái)更新.

條件執行:

條件執行控制指令是否被ARM核執行.處理器會(huì )比較指令的條件屬性和cpsr中的condition flags,如果匹配,該指令執行;否則該指令被忽略.

流水線(xiàn):

RISC處理器用流水線(xiàn)機制來(lái)執行指令.ARM流水線(xiàn)中的指令只有在完全通過(guò)執行階段才被處理.

上面這張圖標明了流水線(xiàn)的使用和程序計數器pc.在執行階段,pc總是指向該指令地址加上8字節.也就是說(shuō)pc總是指向當前指令的下下條指令.當用pc來(lái)計算

相對偏移量時(shí)這點(diǎn)是很重要的,并且它也是所有流水線(xiàn)的特征.

異常 中斷和向量表

當異?;蛑袛喟l(fā)生時(shí),處理器會(huì )將pc指向一個(gè)特殊的內存地址.該地址所在的地址范圍稱(chēng)為向量表.向量表的入口是跳轉指令,跳轉到專(zhuān)門(mén)處理某個(gè)異?;蛑袛嗟?p> 子程序.

存儲器映射地址0x00000000是為向量表預留的.在某些處理器中向量表可以放在更高的地址,從0xffff0000開(kāi)始.linux等操作系統可以利用這個(gè)特性.

當異?;蛘咧袛喟l(fā)生時(shí),處理器掛起正常的處理然后從向量表中加載指令.每個(gè)向量表的入口都包含指向特殊處理例程的跳轉指令.

reset向量是處理器上電后執行的第一條指令,這條指令跳轉到初始化代碼處.

undefined instruction向量是當處理器不能對指令譯碼時(shí)使用的.

software interrupt向量執行SWI指令時(shí)使用的.SWI可以用來(lái)系統調用的實(shí)現.

prefetch abort向量發(fā)生在當沒(méi)有訪(fǎng)問(wèn)權限的條件下試圖獲取該地址的指令時(shí),異常發(fā)生在譯碼階段.

data abort向量與prefetch abort類(lèi)似,只不過(guò)是訪(fǎng)問(wèn)數據發(fā)生的異常.

interrupt request向量被外部硬件用來(lái)中斷處理器的正常執行.只有在cpsr的相應位為0時(shí)才能發(fā)生.

fast interrupt request向量與irq類(lèi)似,是為要求更短的中斷響應時(shí)間的硬件保留的.只有在cpsr的相應位為0時(shí)才能發(fā)生.


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: ARM匯編ARM處理器基本原

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>