- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
浙江大学城市学院 计算机系统原理实验
浙江大学城市学院实验报告
课程名称 计算机系统原理实验
实验项目名称 实验二 hello可执行程序的生成以及GCC和GDB使用
学生姓名 曹隆翔 专业班级 计算机1703 学号
实验成绩 指导老师(签名 ) 日期
一、实验目的:
1. 熟悉Linux操作系统环境;
2. 通过了解高级语言源程序和目标机器代码的不同表示及其相互转换,深刻理解高级语言和机器语言之间的关系,以及机器语言和不同体系结构之间的关系。
3 掌握GCC在Linux环境下编写C语言程序命令和步骤;
4. 掌握GDB调试C语言程序命令和步骤。
二、实验内容:
1、使用文本编辑器编写hello源代码;
2、使用GCC编译器,逐步编译hello程序,观察中间文件。
3、使用文本编辑器编写tst.c源程序;
4、使用GDB调试tst程序,掌握常用调试命令。
三、实验步骤:
使用文本编辑器编写hello程序源码,截图展示。
根据实验讲义,使用不同的命令选项,输出hello编译过程中间文件,截图展示。
使用Editplus或者其他合适的软件,查看hello.i,hello.s,hello.o hello文件内容,截图展示。
Hello.i
Hello.s
Hello.o
Hello
使用文本编辑器编写实验讲义中给出的tst.c源码,截图展示。
根据实验讲义步骤,学习逐步调试tst程序,掌握GDB常用命令,截图展示。
结合实验操作以及GDB的help,了解以下命令的作用。
gdb
开始进行gdb调试
list
显示对象
run
运行程序
break
设置断点
print
显示参数的值
continue
继续程序运行,直到下一个断点
next
执行下一条语句
step
跟踪进入函数内部
info
查看信息
finish
运行程序,直到当前函数返回
quit
退出gdb
help
获取帮助,显示帮助信息
四、思考题(请根据自己的理解,能回答多少就答多少)
(1)分析同一个源程序在不同机器上生成的可执行目标代码是否相同。
提示:从多个方面(如ISA、OS和编译器)来分析。
不相同。因为每个机器内部组成不同,在进行编译、链接等过程时,需要调用标准函数库,而每个机器上函数库的内容可能会有些许差别,因此最后生成的可执行目标代码也不同。
你能在可执行目标文件中找出函数printf ()对应的机器代码段吗?能的话,请标示出来。
为什么源程序文件的内容和可执行目标文件的内容完全不同?
因为源程序文件是由高级语言编写而成,而计算机只能读懂最低级的机器语言,源文件在经历了预处理,编译,汇编和链接过后,由高级语言转变成机器语言,内部的内容会发生改变,因此完全不同。
文档评论(0)