當前位置:首頁 » 操作系統 » pc加拿大夜場演算法

pc加拿大夜場演算法

發布時間: 2022-05-12 00:37:41

1. 加拿大pc演算法教程

1.三級流水線:其實對於PC = PC +8這個問題很簡單,這兩個PC其實代表著不同的意義,第一個PC是對於CPU而言,而第二個PC而言是我們通過編譯器看到的PC(PC指向程序正在運行的那一條指令),但是對於CPU的PC是永遠指向取指那個步,故PC = PC +8。

2.五級流水線; ARM9流水線包括取指(fetch)、解碼(decode)、執行(excute)、緩沖/數據(buffer/data)、回寫(write-back)寄存器堆。ARM9流水線在解碼階段已經開始讀取操作數寄存器,因此解碼階段的PC值和取指階段的PC值關系為:PC(decode)=PC(fetch)+4。因此執行階段的PC值和解碼階段的PC值關系為:PC(excute)=PC(decode)+4。

3.對於軟中斷函數的返回時的PC:如下

ARM Thumb

SWI PC-8 PC-4

xxx 》 PC -4 PC-2 (異常返回將執行這條指令)

yyy PC PC

因此返回指令為: MOV PC , LR

原因:異常是由指令本身引起的,因此內核在計算LR時的PC值並沒有被更新。對於ARM狀態,因為SWI指令表示將跳到異常處理函數,此時SWI這條指令的PC = PC -8,當進入異常處理函數之前,硬體會自動把PC-4保存到LR寄存器中,所以異常處理函數結束後直接MOV PC, LR就行,就會跳到xxx這一條指令去執行。對於Thumb狀態同理。

4.對於IRQ和FIQ中斷函數返回時的PC:

ARM Thumb

xxx PC-12 PC-6 (程序在運行這條代碼時就產生了中斷信號)

yyy 》 PC-8 PC-4 (異常返回將執行這條指令)

zzz PC-4 PC-2

www PC PC

返回指令為: SUBS PC, LR, #4

原因:異常在當前指令執行完成後才會被響應,因此內核在計算LR時的PC值已被更新。對於ARM狀態,程序在執行xxx這條指令時,中斷信號產生,但是由於中斷必須在這一條指令執行完之後才會被響應,執行完後,則此時對於CPU的PC已經指向了www這條指令的取指,在中斷函數函數時應該執行yyy這條指令,雖然硬體會把PC-4的值賦值給LR寄存器,但是這是指向zzz這條指令的,所以返回時應該SUBS PC, LR, #4。對於Thumb狀態同理。

熱點內容
android音源 發布:2024-10-09 14:55:19 瀏覽:118
預編譯sql怎麼模糊查詢 發布:2024-10-09 14:31:24 瀏覽:217
我的世界伺服器被占違法嗎 發布:2024-10-09 14:27:50 瀏覽:390
資源配置如何發生作用 發布:2024-10-09 14:27:48 瀏覽:685
next數組演算法 發布:2024-10-09 14:25:38 瀏覽:138
存儲錄制視頻失敗 發布:2024-10-09 14:24:12 瀏覽:87
演算法結合硬體 發布:2024-10-09 14:11:37 瀏覽:997
安卓驅動編譯進內核 發布:2024-10-09 13:59:30 瀏覽:604
ubuntunginx編譯 發布:2024-10-09 13:27:36 瀏覽:725
怎麼查伺服器ip段 發布:2024-10-09 13:08:04 瀏覽:152