柚子快報(bào)邀請(qǐng)碼778899分享:arm開(kāi)發(fā) Arm 架構(gòu)學(xué)習(xí)
柚子快報(bào)邀請(qǐng)碼778899分享:arm開(kāi)發(fā) Arm 架構(gòu)學(xué)習(xí)
Arm 架構(gòu)學(xué)習(xí)
01 CPU Architecture
按指令集分
arm RISC (reduced instruction set computer)/ load store structure
x86 CISC(complex instruction set computer)/ direct visit memory
【架構(gòu)知多少】談?wù)刋86架構(gòu)與ARM架構(gòu)區(qū)別_x86與arm架構(gòu)區(qū)別-CSDN博客
按存儲(chǔ)分
馮·諾依曼架構(gòu)的特點(diǎn)是將程序指令和數(shù)據(jù)存儲(chǔ)在同一塊內(nèi)存中,通過(guò)一個(gè)共享的總線進(jìn)行數(shù)據(jù)傳輸。這種結(jié)構(gòu)的優(yōu)點(diǎn)是簡(jiǎn)單易懂,容易實(shí)現(xiàn),廣泛應(yīng)用于現(xiàn)代計(jì)算機(jī)系統(tǒng)中。
哈弗架構(gòu)則是將指令和數(shù)據(jù)分開(kāi)存儲(chǔ),通過(guò)不同的總線進(jìn)行數(shù)據(jù)傳輸,這種結(jié)構(gòu)可以提高計(jì)算機(jī)的并行處理能力。
CPU是如何工作的?什么是馮·諾依曼架構(gòu)和哈弗架構(gòu)?-CSDN博客
02 register
40個(gè)寄存器 = 33個(gè)通用寄存器 + 7個(gè)狀態(tài)寄存器
專用寄存器
R16 CPSR 當(dāng)前程序狀態(tài)寄存器
R15 PC(Program Counter) 下一條代碼指令
R14 LR(Link Register) 程序跳轉(zhuǎn)
R13 SP(Stack Pointer) 棧指針
CPSR寄存器分為四個(gè)域,[31:24]為條件域用F表示、[23:16]為狀態(tài)域用S表示、[15:8]為預(yù)留域用X表示、[8:0]為控制域用C表示
Bit[4:0]
[10000]User [10001]FIQ [10010]IRQ [10011]SVC
[10111]Abort [11011]Undef [11111]System [10110]Monitor
Bit[5] [0]ARM狀態(tài) [1]Thumb狀態(tài)
Bit[6] [0]開(kāi)啟FIQ [1]禁止FIQ
Bit[7] [0]開(kāi)啟IRQ [1]禁止IRQ
Bit[28]
> 當(dāng)運(yùn)算器中進(jìn)行加法運(yùn)算且產(chǎn)生符號(hào)位進(jìn)位時(shí)該位自動(dòng)置1,否則為0
> 當(dāng)運(yùn)算器中進(jìn)行減法運(yùn)算且產(chǎn)生符號(hào)位借位時(shí)該位自動(dòng)置0,否則為1
Bit[29] > 當(dāng)運(yùn)算器中進(jìn)行加法運(yùn)算且產(chǎn)生進(jìn)位時(shí)該位自動(dòng)置1,否則為0
> 當(dāng)運(yùn)算器中進(jìn)行減法運(yùn)算且產(chǎn)生借位時(shí)該位自動(dòng)置0,否則為1
Bit[30] 當(dāng)運(yùn)算器中產(chǎn)生了0的結(jié)果該位自動(dòng)置1,否則為0
Bit[31] 當(dāng)運(yùn)算器中產(chǎn)生了負(fù)數(shù)的結(jié)果該位自動(dòng)置1,否則為0
03 Instruction set
ARM采用RISC架構(gòu),CPU本身不能直接讀取內(nèi)存,而需要先將內(nèi)存中內(nèi)容加載入CPU中通用寄存器才能被CPU處理。使用LDR/STR指令組合來(lái)實(shí)現(xiàn) ARM CPU和內(nèi)存數(shù)據(jù)的交換:
LDR(load register)指令將內(nèi)存內(nèi)容加載入通用寄存器。 STR(store register)指令將寄存器內(nèi)容存入內(nèi)存空間中。
尋址方式:
立即數(shù)尋址寄存器尋址堆棧尋址
萬(wàn)字長(zhǎng)文帶你由淺入深夯實(shí)ARM匯編基礎(chǔ)——匯編指令及尋址方式最全梳理(附示例)!-CSDN博客
04 work mode
usersystemIRQFIQSVCAbortUndefMonitor
異常模式:在ARM的基本工作模式中有5個(gè)屬于異常模式,即ARM遇到異常后會(huì)切換成對(duì)應(yīng)的異常模式。
05 memory mode
ARM支持大端、小端兩種內(nèi)存模式。
大端:數(shù)據(jù)高字節(jié)存在低地址,低字節(jié)存在高地址。
小端:數(shù)據(jù)高字節(jié)存在高地址,低字節(jié)存在低地址。
匯編判斷大小端:
r0 = 0x11223344 ;復(fù)制0x11223344給寄存器r0
r1 = 0x100 ;賦值0x100給寄存器r1
STR r0,[r1] ;把r1的值作為地址,加載r0的數(shù)值到0x100的地址中
LDRB r2,[r1] ;從地址0x100中取出1Byte數(shù)據(jù)
判斷r2的值可知道大小端:
小端模式下:r2=0x44
大端模式下:r2=0x11 ARM學(xué)習(xí)之ARM基礎(chǔ)知識(shí)(一)_學(xué)arm需要什么基礎(chǔ)-CSDN博客
柚子快報(bào)邀請(qǐng)碼778899分享:arm開(kāi)發(fā) Arm 架構(gòu)學(xué)習(xí)
文章鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。