作者gglk (锦州挖挖)
看板CSIE_ASM
标题Re: [问题] Relocatable code
时间Thu Oct 18 11:30:29 2007
※ 引述《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)