日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ARM体系结构与汇编指令

發(fā)布時間:2024/7/23 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ARM体系结构与汇编指令 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

可編程器件的特點
? CPU在固定頻率的時鐘控制下節(jié)奏運行。
? CPU可以通過總線讀取外部存儲設(shè)備中的二進制指令集,然后解碼執(zhí)行。
? 這些可以被CPU解碼執(zhí)行的二進制指令集是CPU設(shè)計的時候確定的,是CPU的設(shè)計者(ARM公司)定義的,本質(zhì)上是一串由1和0組成的數(shù)字。這就是CPU的匯編指令集。
整個編程及運行過程
? 程序員用匯編指令編程 --經(jīng)匯編器匯編成二進制可執(zhí)行程序文件–>二進制文件被CPU讀取進去–>CPU內(nèi)部電路對二進制文件解碼–>解碼通過則CPU執(zhí)行指令、完成指令動作。
? 如果程序員用C語言等高級語言編程,則編譯器先將C語言程序編譯為匯編程序,再進行上面的后續(xù)部分。

CISC
? complex instruction set computer復(fù)雜指令集CPU
? CISC體系的設(shè)計理念是用最少的指令來完成任務(wù)(譬如計算乘法只需要一條MUL指令即可),因此CISC的CPU本身設(shè)計復(fù)雜、工藝復(fù)雜,但好處是編譯器好設(shè)計。CISC出現(xiàn)較早,至今Intel還一直采用CISC設(shè)計
RISC
? Reduced Instruction-Set Computer精簡指令集CPU
? RISC的設(shè)計理念是讓軟件來完成具體的任務(wù),CPU本身僅提供基本功能指令集。因此RISC CPU的指令集中只有很少的指令,這種設(shè)計相對于CISC,CPU的設(shè)計和工藝簡單了,但是編譯器的設(shè)計變難了。
iROM和iRAM
? S5PV210出廠時內(nèi)置了64KB iROM和96KB iRAM。iROM中預(yù)先內(nèi)置燒錄了一些代碼(稱為iROM代碼),iRAM屬于SRAM(不需軟件初始化,上電即可使用)。210啟動時首先在內(nèi)部運行iROM代碼,然后由iROM代碼開啟外部啟動流程。
為什么需要設(shè)計iROM和iRAM?答案是為了支持多種外部設(shè)備啟動。
Second boot support
? When 1 st boot mode fails, SD/MMC boot will be tried through SD/MMC channel 2 with 4-bit data
? 當(dāng)?shù)谝粏幽J绞r,SD/MMC卡啟動模式下將會從SD/MMC2通道嘗試再次啟動。
? 這種二級啟動是一種冗余設(shè)計。SoC中第一啟動介質(zhì)故障而導(dǎo)致不能啟動時,可以從備用啟動介質(zhì)啟動。我們做裸機實驗時從SD2啟動就是利用了這一設(shè)計特性。
BL0做了什么?
? 關(guān)看門狗
? 初始化指令cache
? 初始化棧
? 初始化堆
? 初始化塊設(shè)備復(fù)制函數(shù)device copy function
? 設(shè)置SoC時鐘系統(tǒng)
? 復(fù)制BL1到內(nèi)部IRAM(16KB)
? 檢查BL1的校驗和
? 跳轉(zhuǎn)到BL1去執(zhí)行
ARM的基本設(shè)定
? ARM 采用的是32位架構(gòu).
? ARM 約定:
– Byte : 8 bits
– Halfword :16 bits (2 byte)
– Word : 32 bits (4 byte)
– 大部分ARM core 提供:
– ARM 指令集(32-bit)
– Thumb 指令集(16-bit )
– Thumb2指令集(16 & 32bit)
? Jazelle cores 支持 Java bytecode
ARM處理器工作模式
– User : 非特權(quán)模式,大部分任務(wù)執(zhí)行在這種模式
– FIQ : 當(dāng)一個高優(yōu)先級(fast) 中斷產(chǎn)生時將會進入這種模式
– IRQ : 當(dāng)一個低優(yōu)先級(normal) 中斷產(chǎn)生時將會進入這種模式
– Supervisor :當(dāng)復(fù)位或軟中斷指令執(zhí)行時將會進入這種模式
– Abort : 當(dāng)存取異常時將會進入這種模式
– Undef : 當(dāng)執(zhí)行未定義指令時會進入這種模式
– System : 使用和User模式相同寄存器集的特權(quán)模式
除User(用戶模式)是Normal(普通模式)外,其他6種都是Privilege(特權(quán)模式)。
Privilege中除Sys模式外,其余5種為異常模式。各種模式的切換,可以是程序員通過代碼主動切換(通過寫CPSR寄存器);也可以是CPU在某些情況下自動切換。各種模式下權(quán)限和可以訪問的寄存器不同

ARM寄存器

? ARM共有37個寄存器,都是32位長度
? 37個寄存器中30個為“通用”型,1個固定用作PC,一個固定用作CPSR,5個固定用作5種異常模式下的SPSR。
?
? CPSR中各個bit位表明了CPU的某些狀態(tài)信息,這些信息非常重要,和后面學(xué)到的匯編指令息息相關(guān)(譬如BLE指令中的E就和CPSR中的Z標(biāo)志位有關(guān))
? CPSR中的I、F位和開中斷、關(guān)中斷有關(guān)
? CPSR中的mode位(bit4~bit0共5位)決定了CPU的工作模式,在uboot代碼中會使用匯編進行設(shè)置。
PC(r15)程序控制寄存器
? PC(Program control register)為程序指針,PC指向哪里,CPU就會執(zhí)行哪條指令(所以程序跳轉(zhuǎn)時就是把目標(biāo)地址代碼放到PC中)
? 整個CPU中只有一個PC(CPSR也只有一個,但SPSR有5個)。
什么是異常
? 正常工作之外的流程都叫異常
? 異常會打斷正在執(zhí)行的工作,并且一般我們希望異常處理完成后繼續(xù)回來執(zhí)行原來的工作
? 中斷是異常的一種
異常向量表
? 所有的CPU都有異常向量表,這是CPU設(shè)計時就設(shè)定好的,是硬件決定的。
? 當(dāng)異常發(fā)生時,CPU會自動動作(PC跳轉(zhuǎn)到異常向量處處理異常,有時伴有一些輔助動作)
? 異常向量表是硬件向軟件提供的處理異常的支持。
?

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的ARM体系结构与汇编指令的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。