看板 CSIE_ASM 關於我們 聯絡資訊
※ 引述《gglk (錦州挖挖)》之銘言: : 老師,不好意思,可以麻煩再解釋一次 : PC-relative的好處(relocatable code)嗎? : A檔案說 : we can move the code from one block of memory to another without changing : the target addresses : 並不是很懂(move 什麼 code?? code 不是一直那裡給你讀嗎?), : PC-relative 跟 Absolute address 不是只有「計算下一個指令在哪」的方式不同而已? : 算完以後還是都把PC移過去了不是嘛? : 謝謝您。 恩,老師很忙,那我把今天老師回答的打在下面,如果理解的不對, 麻煩老師指出來謝謝。 假如現在PC指到Instructuin A 要從Instructuin A 跳到Instructuin B有兩種跳法, 1.一種是告訴它B的絕對位址(Absolute address), 2.一種是告訴他B離現在的PC多遠(PC relative), 差別就在於當整個程式碼的位置有調動 (即A檔案所謂:move the code from one block of memory to another)時, 若當初採的是第一種方法,我必須重新計算B的絕對位址, 若是第二種,B離A多遠並不會因為整個程式碼位置改了而有變動, 不用重算。 所以A檔案說 without changing the target addresses 這就是relocatable code。 不過還是有一些地方我想再確認: 1.所以說,B離A多遠這個資訊,他是在程式執行時會被保存起來囉? 2.所謂 整個程式碼位置改變 是指「程式在跑的時候」,程式碼不會固定放在那裏給你讀, 而是有可能位置變來變去這樣嗎? 還是說「每次打開這個程式的時候」它的被放的 位置都不同這樣? 應該不會是後者因為執行完應該早就沒有B離A多遠的資訊了吧?可是又覺得執行時整個 CODE會移來移去很怪... 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.30.108 ※ 編輯: gglk 來自: 140.112.30.108 (10/18 11:32) ※ 編輯: gglk 來自: 140.112.30.108 (10/18 11:32) ※ 編輯: gglk 來自: 140.112.30.108 (10/18 11:33) ※ 編輯: gglk 來自: 140.112.30.108 (10/18 11:43)