※ 引述《wsx02 ()》之銘言:
: 1. http://ppt.cc/txxl 張凡的書在48頁
: 請問第3題是甚麼意思? 1跟2我會 只是第3題看不懂
: 2. http://ppt.cc/Ri2X 張凡的書在49頁
: 1跟2我會
: 請問第3題 為什麼是
: a. jump跟beq都是no
: b. jump跟beq都是yes
: 謝謝
1.
(a) .在只有8個暫存器之下(在這邊應該是指General Purpose Register)
勢必造成各個指令長度變短(除了Jump以外),
則會降低code的size;這是假設在這樣長度的指令還能處理此程式情況下;
若不是;則造成指令數變多;因為常用的數值又會更多的被存在記憶體中,
是register spill的情況;我想會有更多的存取記憶體的指令產生。
(b) .當可以表示立即值的常數欄位又變更短的情況下;
我想條件跳躍指令所可達到的範圍又更狹隘,在此情況下,可能導致原本程式
一個跳躍所到得了的地方,可能需要更多個條件跳躍指令;
(我看了解答後,發現解答是講lui,這個我只有模糊的想法)
所以這邊麻煩解答一下
2. (3a).這邊可以秒殺.因為0*0000 1000跟0*2000 0000 根本在不同block
不同block,jump也跳不到,所以branch更不可能。
(3b).這個要算,我會先算beq,beq可以jump就可以。
先把兩個16進制的數字抓過來先剪 0*20001400
- 0*20000000
-------------
1400
1400=0001 0100 0000 0000
為2^12所以在Branch的範圍內 DONE
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 115.165.193.110
※ 編輯: Numbstu 來自: 115.165.193.110 (07/12 22:22)
※ 編輯: Numbstu 來自: 115.165.193.110 (07/12 22:24)