|
電腦遊戲製作開發設計論壇 任何可以在PC上跑的遊戲都可以討論,主要以遊戲之製作開發為主軸,希望讓台灣的遊戲人有個討論、交流、教學、經驗傳承的園地
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
yag Site Admin
註冊時間: 2007-05-02 文章: 689
2704.11 果凍幣
|
發表於: 2008-2-22, PM 1:26 星期五 文章主題: immediate |
|
|
immediate一般用法是個形容詞
不過在計算機組織(應該是計算機組織吧…)的領域中,有時會把它當成名詞來看,意義就跟常數差不多
像是如下的RISC指令:
Addition immediate
addi rt, rs, imm # 將rs暫存器裡的值跟imm的值相加存入rt暫存器
AND immediate
and rt, rs, imm # 跟rs暫存器裡的值跟imm的值做邏輯AND後把結果存入rt暫存器
Shift left logical
sll rd, rt, imm # 將rt暫存器裡的值往左移動imm個位元,並將結果存入rd暫存器。左移後右邊多出來的位元皆填入0
Shift right logical
srl rd, rt, imm # 將rt暫存器裡的值往右移動imm個位元,並將結果存入rd暫存器。右移後左邊多出來的位元皆填入0
如上指令,其中的imm是指任意一個十進位的數字,比如說
addi rt, rs, 43 # 以c++來說,這行就跟rt = rs + 43;是一樣的意思
srl rd, rt, 5 # 以c++來說,這行就跟rd = rt >> 5;是一樣的意思
不過我看有些講義裡似乎會使用像
addi rt, rs, #43
或
srl rd, rt, #5
這樣的用法來代表imm,我也不知道到底是否應該要在數字前加個#號,又或許加了#號是有特殊的用意,這個就要再查一下,如果有知道其中差異的高手看了此篇,還請幫忙解答一下。
另外底下附加兩題台大研究所的考題,有興趣可以做做看。
請使用上面四個指令的任何「一個」,來完成跟下面c語言敘述同義的RISC碼。在RISC碼中可直接使用c語言的變數名稱來代表暫存器名稱。
(a) b = a / 8;
(b) b = a % 16; |
|
回頂端 |
|
|
happylin 略有貢獻的成員
註冊時間: 2007-07-26 文章: 70
127.34 果凍幣
|
發表於: 2008-2-25, AM 10:06 星期一 文章主題: |
|
|
引言回覆: |
(a) b = a / 8;
(b) b = a % 16;
|
a) 如果 a 是無號數. 才可以使用srl 來處理/2/2/2 = /8 的問題
srl b,a,#3 右旋3次表示/8
b)
b = a % 16 剛好就是 & 15 的結果(最後4個bit )
所以是
and b,a,#15 |
|
回頂端 |
|
|
yag Site Admin
註冊時間: 2007-05-02 文章: 689
2704.11 果凍幣
|
發表於: 2008-2-25, PM 12:10 星期一 文章主題: |
|
|
happylin 寫到: | 引言回覆: |
(a) b = a / 8;
(b) b = a % 16;
|
a) 如果 a 是無號數. 才可以使用srl 來處理/2/2/2 = /8 的問題
srl b,a,#3 右旋3次表示/8
b)
b = a % 16 剛好就是 & 15 的結果(最後4個bit )
所以是
and b,a,#15 |
嗯嗯
我忘了加上無號數的限制
話說
你在imm加#號是因為你們當初學的是這樣? |
|
回頂端 |
|
|
happylin 略有貢獻的成員
註冊時間: 2007-07-26 文章: 70
127.34 果凍幣
|
發表於: 2008-2-25, PM 7:35 星期一 文章主題: |
|
|
我沒學過這個組語. 我是看你加跟這加的.
基本上這跟不同的組譯器設計有關係把.
有的組譯器會加有的不會加. |
|
回頂端 |
|
|
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 可以 在這個版面附加檔案 您 可以 在這個版面下載檔案
|
|