看板 Grad-ProbAsk 關於我們 聯絡資訊
※ 引述《polomoss (小澤)》之銘言: : try : add $t0,$zero,$s4 : ll $t1,0($s1) ll除了讀入($s1)外,另外還會在cpu內部的暫存器中設置一個bit用來監視($s1) 是否有被更改,另外還會有一個暫存器存放($s1)的位址 //這邊是讓你執行atomic operation cpu會不斷的檢查($s1)是否有被改變 若被改變就會被設為0 : sc $t0,0($s1) //若成功則把$t0的值存入($s1)中,並返回一個值1(cpu內的檢查bit) //若失敗則返回一個值0(cpu內的檢查bit) : beq $t0,$zero,try 若返回的值為0,即代表ll與sc間的不是atomic則會回到try重新執行 1,即代表ll與sc間的是atomic,則繼續往下直行 : add $s4,$zero,$t1 : 可以請問這段程式碼每個暫存器各扮演什麼角色嗎~? : 我知道他功能類似OS裡面的SWAP,有key : 但是就是看不懂上面那段程式碼~ : 哪個是key,哪一段是swap, : 以及他要同步化的資料是誰, : 和ll和sc在這邊的用意 : 總之就是都看不懂....希望有人幫忙解釋一下 : 謝謝 如有錯誤請指教~謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.42.204.2 ※ 編輯: killerjoe 來自: 114.42.204.2 (12/04 23:50) ※ 編輯: killerjoe 來自: 114.42.204.2 (12/04 23:51)
polomoss:這樣大概懂了~~我就覺得ll跟sc中間要擺要同步化的指令 12/05 17:32
polomoss:謝謝解釋~~ 12/05 17:32