1
.arm
中斷響應過程(以
irq中斷為例):
if(處理器處於
thumb
狀態下)
{切換到
arm狀態;}將
r0~r12
放入irq
中斷模式下的堆疊中,堆疊指標由
r13(
irq)指明;
將當前狀態暫存器
cpsr
的內容儲存到
spsr
(irq
)中;設定當前狀態暫存器
cpsr
中的相應位:位
0~4控制位設為
10010,位5
即t位工作狀態位設為0—
arm工作狀態,以及if位
5、6中斷禁止,禁止
irq中斷(當中斷訊號為
reset
或者fiq
時,禁止新的
fiq中斷);
將引起異常指令的下一條指令的位址儲存在
r14中,—返回位址;
給程式計數器
pc賦值,使其執行中斷指令**;
2.pc
時刻指向正在取址的指令。
3.arm
的**流水線結構(中斷呼叫原理):
jmp pc
:fetchdecodeexecutel
tadd pc = pc + 4
fetchdecodeexecute
sub pc = (pc + 4) + 4fetchdecode
execute
subpc =
((pc + 4) + 4)+4
fetch decode
圖示詳解:
當jmp
跳轉指令執行完即
execute
之後,開始進入
l週期,此時設定
lr暫存器為當前
pc值,在
t週期硬體完成
lr = lr – 4
的工作,所以
jmp指令返回時。
lr中儲存的返回位址為
lr = pc+ 12 – 4
即pc + 8,
此時如果程式正確返回需要再執行
-4操作,所以其返回指令為
sub pc ,lr
,#4
硬體只完成一次
-4操作,所以需要人工做一次
sub操作。
疑問:arm
子程式呼叫返回語句
mov pc, lr
是什麼原理
4.thumb
指令集是無條件執行的,只有
b指令是有條件執行的。
5.算數移位指令:右移最高位由符號位填充,左移由
0補充。
6.指令
mov r0,#0x0000f200
(錯誤),因為指令格式裡給立即數分配的空間只有
12個位元組,而這個立即數就是
32位了,
arm指令裡立即數的儲存必須用特殊格式,即立即數的
12位包括八位常數和和四位的迴圈右移。其中迴圈右移的位數由乙個四位的二進位制的二倍表示(
0000-1111)*2
比如:0x0000f200
首先提取出八位,要保證這八位能夠通過邏輯右移得到原運算元,這裡提取出
f2,補充到
32位,
000000f2,
邏輯右移
24位得到原運算元,這是補充四個邏輯右移位,用邏輯右移
24位的一半,即12,
12:1100
;f2:11110010
所以12
位立即數字為
110011110010
由此規則可知
mov r0,#0xf3e
是違反規則的,因為因為無法表示成
4+8的形式。
計算機體系結構
計算機體系結構 計算機體系機構指計算機中部件和部件之間的聯絡 一 馮 諾依曼體系 1 計算機處理的資料和指令用二進位制數表示 2 採用儲存程式方式,指令和資料儲存在同乙個儲存器中。3 指令由操作碼和位址組成。操作碼指明指令的操作型別,位址指明運算元和位址。4 以運算器為中心,i o裝置與儲存器間的資...
計算機體系結構
2.計算機體系結構 經典計算機體系結構概念的實質是計算機系統中軟硬體介面的確定,其介面之上的是軟體的功能,介面之下的是硬體和韌體的功能。廣義 現代 的計算機體系結的構概念,它除了包括經典的計算機體系結構的概念範疇 指令集結構 還包括計算機組成和計算機實現的內容。計算機體系結構是程式設計師所看到的計算...
計算機體系結構
首先表示下就剛剛九寨溝發生7級 成都震感強烈 1.記憶體與位址 乙個位址所對應的記憶體單元不能存很多東西,只能存乙個位元組,以前講過的int float等多位元組的資料型別儲存在記憶體中要占用連續的多個位址,這種情況下資料的位址是它所佔記憶體單元的起始位址。2.cpu 處理器是32位的,那麼乙個字就...