Re: [理工] 計算機組織

看板Grad-ProbAsk作者 (セイキ)時間12年前 (2012/03/11 07:35), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串2/6 (看更多)
※ 引述《black32044 (大黑)》之銘言: : 原題是這樣的 : switch(k){ : case 0:f=i+j ; break ; /*k=0*/ : case 1:f=g+h ; break ; /*k=1*/ : case 2:f=g-h ; break ; /*k=2*/ : case 3:f=i-j ; break ; /*k=3*/ : } : 其中變數f,g,h,i,j,k對應到$s0,$s1,$s2,$s3,$s4,$s5暫存器 : 且$t2暫存器為4,試問MIPS組合語言為何? : [解] : slt $t3,$s5,$Zero : bne $t3,$Zero,Exit : slt $t3,$s5,$t2 : beq $t3,$Zero,Exit # 以上為check k的範圍有沒有在0~3 : add $t1,$s5,$s5 : add $t1,$t1,$t1 #做到這邊時 $t1 = 4*k : add $t1,$t1,$t4 #jump table起始位置在$t4位置 (這邊我看不懂) # jump table 是另外被產生的(表格) # 裡面存的第一個word(位置是$t4+0) 所存的值是L0的address # 第二個word(位置是$t4+4) 所存的值是L1的address # 第三個word(位置是$t4+8) 所存的值是L2的address # 第四個word(位置是$t4+12) 所存的值是L3的address : lw $t0, 0($t1) # 相當於去 存取$t4+4k的位置 所存的值 load 到$t0 (查表) : jr $t0 #jump 到 $t0 暫存器裡面所存的(值)位置 : L0: add $s0,$s3,$s4 : j Exit : L1: add $s0,$s1,$s2 : j Exit : L2: sub $s0,$s1,$s2 : j Exit : L3: sub $s0,$s3,$s4 : Exit: : 前面幾行大概都看得懂,前四行都是在設定range,第五行開始把他定在陣列 : 那我是不了解起始位置是怎麼來的,還有他的L0,L1,L2,L3是怎麼跳的, : 因為我看不出來他go to的動作 : 最近剛學計組....感謝哦!!!!! -- 做善事 積人品 等放榜 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.47.210.155 ※ 編輯: seiki 來自: 114.47.210.155 (03/11 07:40)

03/11 17:35, , 1F
祝您上榜XD
03/11 17:35, 1F

03/12 19:57, , 2F
謝謝,你會上榜的!!!明年考生推
03/12 19:57, 2F
文章代碼(AID): #1FM-LGtC (Grad-ProbAsk)
文章代碼(AID): #1FM-LGtC (Grad-ProbAsk)