计算机系统
大作业
题 目 程序人生-Hello’s P2P
专 业 计算学部
学 号 xxxxxxxxxx
班 级 2036012
学 生 xxx
指 导 教 师 刘宏伟
计算机科学与技术学院
2021年5月
为使读者了解一个程序从出生到死亡的各种细节,本文记录了Ubuntu下程序“hello”从预处理、编译、汇编、链接、执行直到终止的过程,并使用edb工具对程序进行反编译并分析。最终对“hello”的一生有了详细的了解,并可类似地将知识与分析方法运用在对其他程序的分析上。
关键词:计算机系统;OS;C语言;编译;……;
目 录
2.2在Ubuntu下预处理的命令............................................................................. - 5 -
5.3 可执行目标文件hello的格式........................................................................ - 8 -
6.2 简述壳Shell-bash的作用与处理流程........................................................ - 10 -
6.3 Hello的fork进程创建过程......................................................................... - 10 -
第1章 概述
1.1 Hello简介
P2P过程
对hello.c预处理生成hello.i,再由编译生成hello.s,再汇编生成hello.o,最后生成可执行文件hello。
O2O过程
shell调用execve,进入主函数的执行代码,最后打印结果,并结束进程、释放空间。
1.2 环境与工具
1.2.1 硬件环境
X64CPU; 2.60GHz; 3G RAM; 40G Disk; (Linux)
1.2.2 软件环境
ubuntu-20.04.4-desktop-amd64
1.2.3 开发工具
Visual Studio Code1.65.2; Edb1.3.0
1.3 中间结果
文件名 |
作用 |
Hello.i |
Hello.c经预处理后得到的文件 |
Hello.s |
汇编后的文件 |
Hello.o |
可重定位目标文件 |
Hello |
可执行文件 |
Hello.elf |
Hello.o的elf格式 |
_Hello.elf |
Hello的elf格式 |
O_hello |
Hello的反汇编代码 |
O_hello_o |
Hello.o的反汇编代码 |
1.4 本章小结
本章简要介绍了Hello的P2P及O2O过程,介绍了使用的硬件、软件环境及开发工具,对产生的中间文件的作用进行了说明。