⑴ 取指從存儲器裝載一條指令code
⑵ 譯碼識別將要被執行的指令效率
⑶ 執行處理指令並將結果寫會寄存器程序
PC值 = 當前程序執行位置 + 8字節view
處理器處於Thumb狀態時,每條指令爲2字節,因此PC值爲正在執行的指令地址加4字節,便是:vi
PC值 = 當前程序執行位置 + 4字節copy
[plain] view plaincopyprint? 0x4000 ADDPC,PC,#4 ;正在被執行的指令,將地址值PC+4寫入PC 0x4004 ...;正在被譯碼的指令 0x4008 ...;正在被取指的指令,PC=0x4008 0x400C ...;PC+4=0x400C
另外補充說明就是根據以上描述,流水線只有被指令填滿時才能發揮最大效能,即每時鐘週期完成一條指令的執行(僅單週期指令)。若是程序發生跳轉,流水線會被清空,這將須要幾個時鐘才能使流水線被再次填滿。所以,儘可能地少使用跳轉指令能夠提升程序的執行效率這樣你就知道了,若是返回的時候返回PC,那麼中間就有一個指令沒有執行,因此用SUB pclr-irq #4。co