1.arm有31個32位寄存器,其他的用於加速執行。
2. r0~r13是完全通用的, 而r14=LR, r15=PC.
1) LR在BL指令後,做爲BL指令的下一條指令地址, 即函數返回地址(這和Powerpc是完全相同的),其他時候LR(R14)可作爲通用寄存器使用。
2) PC(R15), 程序計數器,指向下一條指令地址, 由於arm指令都是4字節的,所以PC末尾兩位總爲0。(這和Powerpc不同, Powerpc是沒有顯式的PC的)。
3) 軟件一般使用r13作爲棧寄存器, 但這不是必須的。(和Powerpc一致,棧寄存器可以自選, 而x86就不同,棧寄存器永遠是SP)
3. arm有五種異常,每種對應一個特權處理模式。
快速中斷(fast interrupt), 普通中斷(normal interrupt), 內存故障(memory aborts), 非法指令(attempted to execution of undefined instruction). 每種異常, r13,r14都有一個影像寄存器, 在快速中斷時,r8~r12也都各有一個影子寄存器。 中斷時, r14保存返回地址, 而r13一般用來保存私有的棧指針。
arm還有一個模式, 系統模式(system mode), 用來訪問特權資源, 一般內核代碼運行在此級別。
4. CPSR包含除通用寄存器外,所有的處理器狀態。 每個異常模式還包含一個SPSR,包含異常發生前的CPSR值。
5. arm指令集分成六類:
1) 分支指令(Branch instructions)
2) 數據處理指令 (Data-processing instructions)
3) 狀態寄存器傳送指令 (Status register tansfer instructions)
4) 加載和存儲指令 (Load and store instructions)
5)協處理器指令 (Coprocessor instructions)
Arm architecture 第一章
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
How to Write Go Code
zxdevops
2019-02-22 21:59:32
不得不爲LINQ說幾句話,駁“LINQ已死”論
lihuijun
2019-02-22 19:54:14
修改windows的語言
我的遊客
2019-02-22 19:40:56
Advice to a Beginning Graduate Student
xfjoy0223
2019-02-22 18:57:28
bad environment-failed to execute 'devices.exe -default'
virus
2019-02-22 18:55:19
to do list
a_jkou
2019-02-22 18:26:36
Unsupported major.minor version
jtr22
2019-02-22 16:26:12
Linux系統Qmail郵件服務器安裝過程解析
cjh113
2019-02-22 16:13:45
Loadrunner報Failed to connect to server "127.0.0.1"
ShanaW
2019-02-22 15:46:05
線程池使用不當導致服務器內存耗盡
hellooworld
2019-02-22 15:12:38
關於jsp中使用jstl
張健的博克
2019-02-22 13:17:48
VMC to Hyper-V Import Tool 簡體中文版.<VZPEDIA首發>
BabyXc
2018-09-12 07:10:31
mysql Tracing the Optimizer
sql1101
2018-11-30 12:53:17
the NTP socket is in use, exiting
ling118
2018-11-02 02:03:10
My job?My way?
PromeTech
2018-09-13 03:13:38