网站大量收购独家精品文档,联系QQ:2885784924

计算机系统导论第7章习题参考答案.pdf

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

第7章程序的链接

2.简单回答下列问题。

(1)如何将多个C语言源程序模块组合起来生成一个可执行目标文件?简述从源程序到可

执行目标文件的转换过程?

(2)引入链接的好处是什么?

(3)可重定位目标文件和可执行目标文件的主要差别是什么?

(4)静态链接方式下,静态链接器主要完成哪两方面的工作?

(5)可重定位目标文件的.text节、.rodata节、.data节和.bss节中分别主要包含什么信息?

(6)可执行目标文件中的.text节、.rodata节、.data节和.bss节中分别主要包含什么信息?

(7)可执行目标文件中有哪两种可装入段?哪些节组合成只读代码段?哪些节组合成可读

写数据段?

(8)加载可执行目标文件时,加载器根据其中的哪个表的信息对可装入段进行映射?

(9)在可执行目标文件中,可装入段被映射到虚拟存储空间,这种做法有什么好处?

(10)静态链接和动态链接的差别是什么?

【分析解答】(略)

3.假设一个C语言程序有两个源文件:main.c和test.c,它们的内容如图7.28所示。

1/*main.c*/1/*test.c*/

2intsum();2externinta[];

33intval=0;

4inta[4]={1,2,3,4};4intsum()

5externintval;5{

6intmain()6inti;

7{7for(i=0;i4;i++)

8val=sum();8val+=a[i];

9returnval;9returnval;

10}10}

图7.28题3用图

对于编译生成的可重定位目标文件test.o,填写表7.1中各符号的情况,说明每个符号

是否出现在test.o的符号表(.symtab节)中,如果是的话,定义该符号的模块是

main.o还是test.o,该符号的类型是全局、外部还是本地符号,该符号出现在test.o的

哪个节(.text、.data或.bss)。

表7.1题3用表

符号在test.o的符号表中?定义模块符号类型节

a

val

sum

i

【分析解答】

根据题中给出的条件,填表7.1得到表项内容如下。

符号在test.o的符号表中?定义模块符号类型节

a在main.oextern.data

val

文档评论(0)

balala11 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档