Re: [問題] Relocatable code

作者: gglk (錦州挖挖)   2007-10-18 11:30:29
※ 引述《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會移來移去很怪...
謝謝

Links booklink

Contact Us: admin [ a t ] ucptt.com