iT邦幫忙

2022 iThome 鐵人賽

DAY 8
0

嗨各位,今天的筆記是控制流程(flow control)

  • 不做任何運算只改變指令執行順序,其指令有分為:
    1.有條件改變指令順序分支(branch)。
    2.無條件改變指令順序跳躍(jump)。

指令:branch if equal

當register1等於register2時,跳至Label所指的記憶體位址。
格式:beq register1,register2,Label
功能:if(register1 == register2) PC <- Label
https://ithelp.ithome.com.tw/upload/images/20220920/20145527BDFjvWy5BZ.jpg

指令:branch if not equal and jump

當register1不等於register2時,跳至Label所指的記憶體位址。
格式:bne register1,register2,Label
功能:if(register1 != register2) PC <- Label

指令:jump

無條件直接跳躍至Label所指的記憶體位址。
格式:j Label
功能:PC <- Label
https://ithelp.ithome.com.tw/upload/images/20220920/20145527kDy3Xs5AZt.jpg

以下為Loop表示法,當指令一連串運算後發現條件不達標,則跳回至Loop開始位置,依此循環直到達成條件跳出:
https://ithelp.ithome.com.tw/upload/images/20220920/201455270p1dPzJgus.jpg

指令:set if less than and jump register

當register2小於register3時,register1設為1,則register1設為0
格式:slt register1,register2,register3
功能:if(register2 < register3) then register1 = 1 else register1 = 0

基本區塊(basic block)

  • 為編譯程式執行最佳化(最少且最精闢的指令)的最基本單位,而最佳化發生在基本區塊內或是每個基本區塊之間。
  • 基本區塊的區分,最簡單來說基本區塊的最後一個指令存在branch,或是第一個指令存在branch。
    以下為示意圖:
    https://ithelp.ithome.com.tw/upload/images/20220920/20145527e91il8qHOo.jpg

虛擬指令

  • 虛擬指令為機器不能執行(此指令並不存在)但組譯可以接受(由已存在指令來實現不存在的指令)
  • 其目的為防止指令集膨脹,且又可以讓使用者輕鬆使用
    如圖所示,虛擬指令由哪些MIPS指令構成:
    https://ithelp.ithome.com.tw/upload/images/20220920/201455272d7BAtnPbS.jpg

好了!今天的筆記在這裡告一段落了,雖然是廢廢的讀研紀錄,但希望這些小筆記能幫助到人。


上一篇
DAY 7 計算機組織小筆記4
下一篇
DAY 9 轉換重心
系列文
關於因耍廢太久而必須挑戰5個月上研究所的廢廢38
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言