ARM匯編指令集,ARM程序開發(fā)必備文檔。詳解分類介紹ARM指令。
上傳時(shí)間: 2016-02-03
上傳用戶:baitouyu
ARM微處理器的指令系統(tǒng),arm指令集,各種操作
標(biāo)簽: ARM 微處理器 指令系統(tǒng)
上傳時(shí)間: 2016-12-05
上傳用戶:a6697238
ARM處理器有兩種工作狀態(tài)ARM和Thumb(Jazelle此處先不考慮)。這兩種工作狀態(tài)和運(yùn)行模式?jīng)]有任何關(guān)系。比如不論是ARM還是Thumb狀態(tài)的代碼都可以運(yùn)行在用戶模式下。這兩種工作狀態(tài)之間最大的差異是指令集,ARM狀態(tài)的指令長(zhǎng)度是32位的,Thumb狀態(tài)的指令長(zhǎng)度是16位的(也可能為32位)。了解如何使用Thumb工作狀態(tài)對(duì)于編寫ARM平臺(tái)的漏洞利用是至關(guān)重要的。當(dāng)我們編寫ARM shellcode時(shí),需要使用16 bit的Thumb指令代替32 bit的ARM指令,從而避免在指令中出現(xiàn)’\0’截?cái)唷H菀滓鸹煜氖牵煌腁RM版本,支持的Thumb指令集并不相同。在某些版本中,ARM引入了擴(kuò)展的Thumb指令集(也就是Thumb-2),它支持32 bit指令以及條件執(zhí)行。這在原本的Thumb指令中都是不受支持的。為了在Thumb狀態(tài)下支持條件執(zhí)行,“it”指令被引入。然而,可能是為了簡(jiǎn)化指令集,這個(gè)指令在后來(lái)的版本中被刪除了。我認(rèn)為這種設(shè)計(jì)反而增加了兼容的復(fù)雜度。不過(guò),當(dāng)然我認(rèn)為沒必要知道所有ARM版本的ARM/Thumb指令集變體,我建議你也不必在這上面浪費(fèi)太多時(shí)間。你只需要知道目標(biāo)設(shè)備的版本和該版本對(duì)Thumb指令有哪些特殊支持,然后調(diào)整你的代碼就好了。ARM Infocenter可以幫助你了解各個(gè)ARM版本的具體細(xì)節(jié)
上傳時(shí)間: 2022-02-10
上傳用戶:
這個(gè)PDF的內(nèi)容是ARM匯編指令和偽操作,還有一些指令示例。
上傳時(shí)間: 2022-05-20
上傳用戶:wangshoupeng199
常用ARM7TDMI(-S)指令集及匯編,
上傳時(shí)間: 2013-06-28
上傳用戶:jhksyghr
SoC(System On a Chip)又稱為片上系統(tǒng),是指將微處理器、模擬IP核、數(shù)字IP核和存儲(chǔ)器(或片外存儲(chǔ)器接口)集成在單一芯片上。SoC產(chǎn)品不斷朝著體積小、功能強(qiáng)的方向發(fā)展,芯片內(nèi)部整合越來(lái)越多的功能。ARM架構(gòu)作為嵌入式系統(tǒng)流行的應(yīng)用,其應(yīng)用的擴(kuò)展面臨軟件擴(kuò)充的問(wèn)題,而X86平臺(tái)上卻有很多軟件資源。若將已有的X86軟件移植到ARM平臺(tái),則可以在一定程度上解決軟件擴(kuò)充的問(wèn)題。 本論文針對(duì)X86指令在ARM中兼容的應(yīng)用,以智能手機(jī)的應(yīng)用為例,提出了基于ARM嵌入式平臺(tái),使用X86指令到ARM指令的二進(jìn)制翻譯模塊,達(dá)到對(duì)X86指令的兼容。主要研究ARM公司的片上總線系統(tǒng)——AMBA AHB和AMBA APB片上總線標(biāo)準(zhǔn)。對(duì)Multi-layer總線結(jié)構(gòu)進(jìn)行研究,分析了Multi-layer AHB系統(tǒng)中使用的Bus Matrix模塊的結(jié)構(gòu),從Bus Matrix模塊的內(nèi)部矩陣結(jié)構(gòu)和系統(tǒng)架構(gòu)兩方面針對(duì)系統(tǒng)的特點(diǎn)作出優(yōu)化。 最后介紹了論文采用的事物級(jí)模型與Verilog HDL協(xié)同仿真的方法和系統(tǒng)的控制過(guò)程,通過(guò)仿真結(jié)果的比較,驗(yàn)證了利用二進(jìn)制翻譯模塊實(shí)現(xiàn)X86指令執(zhí)行的可行性和優(yōu)化后的架構(gòu)較適合于X86翻譯系統(tǒng)的應(yīng)用。
上傳時(shí)間: 2013-06-28
上傳用戶:釣鰲牧馬
·本書從實(shí)用的角度出發(fā),全面系統(tǒng)地介紹了ARM硬件體系結(jié)構(gòu)、16/32位指令系統(tǒng)、開發(fā)調(diào)試、Linux嵌入式設(shè)計(jì)等開發(fā)ARM處理器的基本操作方法和技巧。全書共分11章,主要內(nèi)容包括: ARM CPU概述、ARM系統(tǒng)結(jié)構(gòu)、ARM指令系統(tǒng)、Thumb指令系統(tǒng)、ARM匯編語(yǔ)言程序設(shè)計(jì)、ARM高級(jí)語(yǔ)言程序設(shè)計(jì)、ARM嵌入式設(shè)計(jì)初步、ARM系統(tǒng)開發(fā)、ARM系統(tǒng)調(diào)試、ARM外圍設(shè)備設(shè)計(jì)和ARM嵌入式Linux應(yīng)
標(biāo)簽: ARM 嵌入式應(yīng)用 開發(fā)技術(shù)
上傳時(shí)間: 2013-06-24
上傳用戶:z1191176801
·內(nèi)容簡(jiǎn)介 本書從51系列單片機(jī)的一般知識(shí)出發(fā),將ARM處理器和51系列單片機(jī)進(jìn)行對(duì)比,引導(dǎo)讀者去理解和學(xué)習(xí)ARM處理器的知識(shí)。內(nèi)容分為3部分:第1部分是前4章,從大家所熟悉的51系列單片機(jī)的基礎(chǔ)知識(shí)開始,介紹ARM處理器的基本知識(shí),包括ARM和51系列的對(duì)比、中斷處理系統(tǒng)、寄存器和存儲(chǔ)器結(jié)構(gòu)等;第2部分是5~9章,詳細(xì)比較ARM指令和51系列指令之間
標(biāo)簽: ARM 嵌入式系統(tǒng)
上傳時(shí)間: 2013-07-21
上傳用戶:WANGXIAN001
ARM處理器的工作模式 ARM處理器狀態(tài) ARM微處理器的工作狀態(tài)一般有兩種,并可在兩種狀態(tài)之間切換:第一種為ARM狀態(tài),此時(shí)處理器執(zhí)行32位的字對(duì)齊的ARM指令;第二種為Thumb狀態(tài),此時(shí)處理器執(zhí)行16位的、半字對(duì)齊的Thumb指令。在程序的執(zhí)行過(guò)程中,微處理器可以隨時(shí)在兩種工作狀態(tài)之間切換,并且,處理器工作狀態(tài)的轉(zhuǎn)變并不影響處理器的工作模式和相應(yīng)寄存器中的內(nèi)容。但ARM微處理器在開始執(zhí)行代碼時(shí),應(yīng)該處于ARM狀態(tài)。 ARM處理器狀態(tài) 進(jìn)入Thumb狀態(tài):當(dāng)操作數(shù)寄存器的狀態(tài)位(位0)為1時(shí),可以采用執(zhí)行BX指令的方法,使微處理器從ARM狀態(tài)切換到Thumb狀態(tài)。此外,當(dāng)處理器處于Thumb狀態(tài)時(shí)發(fā)生異常(如IRQ、FIQ、Undef、Abort、SWI等),則異常處理返回時(shí),自動(dòng)切換到Thumb狀態(tài)。 進(jìn)入ARM狀態(tài):當(dāng)操作數(shù)寄存器的狀態(tài)位為0時(shí),執(zhí)行BX指令時(shí)可以使微處理器從Thumb狀態(tài)切換到ARM狀態(tài)。此外,在處理器進(jìn)行異常處理時(shí),把PC指針?lè)湃氘惓DJ芥溄蛹拇嫫髦?,并從異常向量地址開始執(zhí)行程序,也可以使處理器切換到ARM狀態(tài)。ARM處理器模式 ARM微處理器支持7種運(yùn)行模式,分別為:用戶模式(usr):ARM處理器正常的程序執(zhí)行狀態(tài)。快速中斷模式(fiq):用于高速數(shù)據(jù)傳輸或通道處理。外部中斷模式(irq):用于通用的中斷處理。管理模式(svc):操作系統(tǒng)使用的保護(hù)模式。數(shù)據(jù)訪問(wèn)終止模式(abt):當(dāng)數(shù)據(jù)或指令預(yù)取終止時(shí)進(jìn)入該模式,可用于虛擬存儲(chǔ)及存儲(chǔ)保護(hù)。系統(tǒng)模式(sys):運(yùn)行具有特權(quán)的操作系統(tǒng)任務(wù)。定義指令中止模式(und):當(dāng)未定義的指令執(zhí)行時(shí)進(jìn)入該模式,可用于支持硬件協(xié)處理器的軟件仿真。ARM處理器模式 ARM微處理器的運(yùn)行模式可以通過(guò)軟件改變,也可以通過(guò)外部中斷或異常處理改變。大多數(shù)的應(yīng)用程序運(yùn)行在用戶模式下,當(dāng)處理器運(yùn)行在用戶模式下時(shí),某些被保護(hù)的系統(tǒng)資源是不能被訪問(wèn)的。 除用戶模式以外,其余的所有6種模式稱之為非用戶模式,或特權(quán)模式;其中除去用戶模式和系統(tǒng)模式以外的5種又稱為異常模式,常用于處理中斷或異常,以及需要訪問(wèn)受保護(hù)的系統(tǒng)資源等情況。ARM寄存器 ARM處理器共有37個(gè)寄存器。其中包括:31個(gè)通用寄存器,包括程序計(jì)數(shù)器(PC)在內(nèi)。這些寄存器都是32位寄存器。以及6個(gè)32位狀態(tài)寄存器。 關(guān)于寄存器這里就不詳細(xì)介紹了,有興趣的人可以上網(wǎng)找找,很多這方面的資料。異常處理 當(dāng)正常的程序執(zhí)行流程發(fā)生暫時(shí)的停止時(shí),稱之為異常,例如處理一個(gè)外部的中斷請(qǐng)求。在處理異常之前,當(dāng)前處理器的狀態(tài)必須保留,這樣當(dāng)異常處理完成之后,當(dāng)前程序可以繼續(xù)執(zhí)行。處理器允許多個(gè)異常同時(shí)發(fā)生,它們將會(huì)按固定的優(yōu)先級(jí)進(jìn)行處理。當(dāng)一個(gè)異常出現(xiàn)以后,ARM微處理器會(huì)執(zhí)行以下幾步操作:進(jìn)入異常處理的基本步驟:將下一條指令的地址存入相應(yīng)連接寄存器LR,以便程序在處理異常返回時(shí)能從正確的位置重新開始執(zhí)行。將CPSR復(fù)制到相應(yīng)的SPSR中。根據(jù)異常類型,強(qiáng)制設(shè)置CPSR的運(yùn)行模式位。強(qiáng)制PC從相關(guān)的異常向量地址取下一條指令執(zhí)行,從而跳轉(zhuǎn)到相應(yīng)的異常處理程序處。如果異常發(fā)生時(shí),處理器處于Thumb狀態(tài),則當(dāng)異常向量地址加載入PC時(shí),處理器自動(dòng)切換到ARM狀態(tài)。 ARM微處理器對(duì)異常的響應(yīng)過(guò)程用偽碼可以描述為: R14_ = Return LinkSPSR_= CPSRCPSR[4:0] = Exception Mode NumberCPSR[5] = 0 ;當(dāng)運(yùn)行于 ARM 工作狀態(tài)時(shí)If == Reset or FIQ then;當(dāng)響應(yīng) FIQ 異常時(shí),禁止新的 FIQ 異常CPSR[6] = 1PSR[7] = 1PC = Exception Vector Address異常處理完畢之后,ARM微處理器會(huì)執(zhí)行以下幾步操作從異常返回:將連接寄存器LR的值減去相應(yīng)的偏移量后送到PC中。將SPSR復(fù)制回CPSR中。若在進(jìn)入異常處理時(shí)設(shè)置了中斷禁止位,要在此清除。
上傳時(shí)間: 2013-11-15
上傳用戶:hanbeidang
arm資料匯編,arm指令匯編
上傳時(shí)間: 2014-11-03
上傳用戶:標(biāo)點(diǎn)符號(hào)
蟲蟲下載站版權(quán)所有 京ICP備2021023401號(hào)-1