pengjianbokobe 发表于 2010-03-25 14:20

位置无关代码与可重入代码有什么关系吗?

问题1:如题;
问题2:在链接时,只有表示global的符号需要地址解析吗?
谢谢 :m01:

qtdszws 发表于 2010-03-25 15:02

>> 位置无关代码与可重入代码有什么关系吗?

没有关系,位置无关代码是指该代码在任何地址处都能执行,可重入代码指该代码可以并行执行而不会出问题(没有引用全局变量或引用了且用锁做了保护)


>>在链接时,只有表示global的符号需要地址解析吗?
应该是UND的吧
# readelf -s a.out|grep UND
   0: 00000000   0 NOTYPELOCALDEFAULTUND
   1: 00000000   0 NOTYPEWEAK   DEFAULTUND __gmon_start__
   2: 00000000   251 FUNC    GLOBAL DEFAULTUND __libc_start_main@GLIBC_2.0 (2)
   4: 00000000    57 FUNC    GLOBAL DEFAULTUND printf@GLIBC_2.0 (2)
   0: 00000000   0 NOTYPELOCALDEFAULTUND
    91: 00000000   0 NOTYPEWEAK   DEFAULTUND __gmon_start__
    92: 00000000   0 NOTYPEWEAK   DEFAULTUND _Jv_RegisterClasses
    95: 00000000   251 FUNC    GLOBAL DEFAULTUND __libc_start_main@@GLIBC_
   100: 00000000    57 FUNC    GLOBAL DEFAULTUND printf@@GLIBC_2.0

pengjianbokobe 发表于 2010-03-25 18:33

回复 2# qtdszws


    1.为什么在处理并行时,有时用volatile,有时用锁?
   2.我不知道为什么你那又这么多UND的标识,那一列应该表示所在的section的序列号。

prolj 发表于 2010-03-26 00:32

lz虽然帅的一塌糊涂,基础只是也是一塌糊涂啊。

pengjianbokobe 发表于 2010-03-26 10:02

回复 4# prolj


    ╮(╯▽╰)╭,偶是一个小小菜鸟啊,帮我解答解答呗      :em27:

cjaizss 发表于 2010-03-26 13:36

位置无关代码和可重入代码能有啥关系?完全是两回事嘛

pengjianbokobe 发表于 2010-03-26 13:51

回复 6# cjaizss


    呵呵,总有种感觉他们之间有联系,现在我知道了。那为什么在处理并行时,有时用volatile,有时用锁?

beepbug 发表于 2010-03-27 19:06

你这“位置无关代码”,就是浮动码吧?
一段代码,它内部的所有跳转指令全部是相对转移指令,这样它挪一个位置,执行结果不变。
它与可重入码之间,好像没有关系。
页: [1]
查看完整版本: 位置无关代码与可重入代码有什么关系吗?