首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否每个引用都有符号条目

是否每个引用都有符号条目
EN

Stack Overflow用户
提问于 2021-04-25 12:03:15
回答 1查看 26关注 0票数 0

现在我正在阅读“计算机系统:程序员的视角”和“第七章链接”。有引用、符号和词条相关的知识,书中提到的是词条有符号的定义,而我对这些的思考是“每一个符号都有词条,词条有符号引用就像指针一样,这个引用实际上是有地址的”。因此,每次我读到与代码相关的全局变量或函数/过程时,它们实际上都可以看作是相应的条目,它有符号引用和其他信息。

最后,我的想法是对的?我可以继续这个想法吗?我真的想了解所有关于计算机系统和与编程相关的技术。enter image description here

哦~最后一个问题,.symtab部分的符号表和重定位项表是一样的吗?

EN

回答 1

Stack Overflow用户

发布于 2021-04-26 02:42:11

请避免将符号与条目关联。术语 entry 保留在大多数链接器中,用于指定整个链接程序的入口点,即在程序执行开始时执行的第一条指令的地址。我更喜欢术语记录,用于表示排列到表中的项,例如符号表

当您在程序中创建一个过程或函数时,它将在程序运行时加载到内存中的某个地址。您不知道过程在运行时的确切位置(在哪个数字地址),这就是为什么要为该地址指定一个符号名称(标签)。即符号-程序中特定位置(地址符号)或常量值(标量符号)人类可读的名称。

您可以调用该过程或在写入时使用其符号名称引用它:CALL MyProcedure

MOV register,MyProcedure。同样,MyProcedure地址的最终值尚不清楚,因此编译器暂时将0放入指令体中,而不是此地址,并在重定位表中创建重定位记录。每个这样的记录指定1)指向指令体内的临时0的指针,以及

2)目标符号的规范,以符号表的索引形式表示。

全局符号,如MyProcedure在程序中应该是唯一的,但它们可能会被多次引用,每次引用都会在重定位表中创建一条记录。符号和重定位之间的关系不是1:1。

当链接器有足够的信息来决定每个符号的最终地址时,它将遍历重定位表并将代码中的临时0替换为符号的最终地址。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67249652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档