當前位置:首頁 » 操作系統 » 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狀態同理。

熱點內容
scratch少兒編程課程 發布:2025-04-16 17:11:44 瀏覽:625
榮耀x10從哪裡設置密碼 發布:2025-04-16 17:11:43 瀏覽:355
java從入門到精通視頻 發布:2025-04-16 17:11:43 瀏覽:70
php微信介面教程 發布:2025-04-16 17:07:30 瀏覽:295
android實現陰影 發布:2025-04-16 16:50:08 瀏覽:786
粉筆直播課緩存 發布:2025-04-16 16:31:21 瀏覽:336
機頂盒都有什麼配置 發布:2025-04-16 16:24:37 瀏覽:201
編寫手游反編譯都需要學習什麼 發布:2025-04-16 16:19:36 瀏覽:797
proteus編譯文件位置 發布:2025-04-16 16:18:44 瀏覽:354
土壓縮的本質 發布:2025-04-16 16:13:21 瀏覽:581