推 yupog2003: 原本的code應該就是把值load出來加上某個值之後存回去?01/23 20:04
→ yupog2003: F12是從F10加出來的,F10是從-16(R1)讀出來的,存回去01/23 20:05
→ yupog2003: 也要存-16(R1),不過前面已經有SUBI R1,R1,#32了,01/23 20:06
→ yupog2003: 也就是R1已經被-32了,所以這邊A要填16,最後的結果才01/23 20:06
→ yupog2003: 會是-1601/23 20:06
→ yupog2003: F16是從F14加出來的,F14是從-24(R1)讀出來的,跟剛剛01/23 20:07
→ yupog2003: 一樣,因為R1被-32了,所以這邊要填8才會是-2401/23 20:08
→ yupog2003: 原原po覺得loop跑完才去存值應該是忘記那個SD是01/23 20:09
→ yupog2003: branch slot了?BNEZ要在ID階段決定是否要跳,所以安插01/23 20:09
→ yupog2003: 一個不管要不要跳都會執行的指令在BNEZ下方,是為01/23 20:10
→ yupog2003: branch slot,所以應該還是loop內就會SD了01/23 20:10
→ AllenPaul: 那上面Loop程式是做什麼用的呢01/23 20:14
→ yupog2003: 就是還沒loop unrolling前的程式碼,應該拉...01/23 20:15
→ AllenPaul: 所以A + (-32) = -16 做還原這樣嗎 有點像 stack point01/23 20:16
→ AllenPaul: er的概念01/23 20:16
→ AllenPaul: 好的再次謝謝yu大 剛去問了張凡01/23 20:16
→ yupog2003: 嗯嗯我認為是這樣沒錯01/23 20:17
→ AllenPaul: 好的照這樣算出來是BC沒錯 只是我目前還看不出來為什01/23 20:20
→ AllenPaul: 麼要這樣 先謝謝你! 我再想一下01/23 20:20
→ yupog2003: 如果是在想為什麼要先SUBI再加回去的話,我的想法是因01/23 20:24
→ yupog2003: 為要避免SUBI跟BNEZ的data hazard,所以把SUBI提前做了01/23 20:24
→ yupog2003: 導致後面那些SD的位址都要加回來 01/23 20:25
→ AllenPaul: 不不不不是那個問題 是我看不出來這個程式做這件事01/23 20:26
→ yupog2003: 喔喔好的XD01/23 20:26
→ AllenPaul: 謝謝啦哈哈!01/23 20:29
※ 編輯: AllenPaul (42.73.209.122), 01/23/2017 21:51:11