[問題] C語言轉組合語言

看板ASM (組合語言)作者 (大黑)時間13年前 (2012/03/02 22:14), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
原題是這樣的 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 add $t1,$s5,$s5 add $t1,$t1,$t1 add $t1,$t1,$t4 #jump table起始位置在$t4位置 (這邊我看不懂) lw $t0, 0($t1) jr $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: 122.100.76.46
文章代碼(AID): #1FKDNRcN (ASM)
文章代碼(AID): #1FKDNRcN (ASM)