[計組] Code Scheduling

看板Grad-ProbAsk作者 (伊佛利特)時間11年前 (2013/01/12 13:34), 編輯推噓4(407)
留言11則, 4人參與, 最新討論串1/1
假設處理器一次可以分發兩個指令(ex.左:ALU or branches, 右:LW or SW) Loop: lw $t0, 0($s1) addu $t0, $t0, $s2 sw $t0, 0($s1) addi $s1, $s1, -4 bne $s1, $zero, Loop code scheduling 後: Loop: lw $t0, 0($s1) addi $s1, $s1, -4 addu $t0, $t0, $s2 bne $s1, $zero, Loop sw $t0, 4($s1) ↑ 1. 這邊為什麼會是4,而不是16? 2. 上面的addi跟addu可以互換嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.237.64

01/12 14:01, , 1F
1.addi 先-了4 sw要加回來 2.NO 會有load use
01/12 14:01, 1F

01/12 17:57, , 2F
小的知道因為addi先-4所以sw要加回來0.0 可是不用對齊
01/12 17:57, 2F

01/12 17:57, , 3F
byte address嗎==?
01/12 17:57, 3F

01/12 17:58, , 4F
$s1扣4後,sw不是應該加上4*4的offset嗎,還是我觀念有錯
01/12 17:58, 4F

01/12 18:00, , 5F
另外2.原來有load-use,感謝回答!
01/12 18:00, 5F

01/12 20:32, , 6F
對"暫存器S1"來說 +4 等於移一格而已 你可以舉例子看看
01/12 20:32, 6F

01/12 22:27, , 7F
sw那行原本是Mem[0+s1]=t0,減過以後+回去所以是[4+s1]
01/12 22:27, 7F

01/13 12:06, , 8F
sw那一行原本不是address[0+$s1的值*4]嗎= =?
01/13 12:06, 8F

01/13 12:07, , 9F
那s1-4後,相當於-16,所以應該要+16回來吧...
01/13 12:07, 9F

01/14 23:48, , 10F
有人可以跟我說我哪裡觀念有錯嗎.........
01/14 23:48, 10F

01/26 11:07, , 11F
sw跟lw裡的常數本身就是以對齊byte address表示了吧
01/26 11:07, 11F
文章代碼(AID): #1GyFNohQ (Grad-ProbAsk)