哈尔滨工业大学计算机系统大作业-Hello’s P2P

 

计算机系统

大作业

题     目  程序人生-Hello’s P2P 

专       业       计算学部         

学     号      xxxxxxxxxx        

班     级        2036012        

学       生          xxx        

指 导 教 师          刘宏伟         

计算机科学与技术学院

2021年5月

摘  要

为使读者了解一个程序从出生到死亡的各种细节,本文记录了Ubuntu下程序“hello”从预处理、编译、汇编、链接、执行直到终止的过程,并使用edb工具对程序进行反编译并分析。最终对“hello”的一生有了详细的了解,并可类似地将知识与分析方法运用在对其他程序的分析上。

关键词:计算机系统;OS;C语言;编译;……;                           

目  录

第1章 概述................................................................................................................ - 4 -

1.1 Hello简介......................................................................................................... - 4 -

1.2 环境与工具........................................................................................................ - 4 -

1.3 中间结果............................................................................................................ - 4 -

1.4 本章小结............................................................................................................ - 4 -

第2章 预处理............................................................................................................ - 5 -

2.1 预处理的概念与作用........................................................................................ - 5 -

2.2在Ubuntu下预处理的命令............................................................................. - 5 -

2.3 Hello的预处理结果解析................................................................................. - 5 -

2.4 本章小结............................................................................................................ - 5 -

第3章 编译................................................................................................................ - 6 -

3.1 编译的概念与作用............................................................................................ - 6 -

3.2 在Ubuntu下编译的命令................................................................................ - 6 -

3.3 Hello的编译结果解析..................................................................................... - 6 -

3.4 本章小结............................................................................................................ - 6 -

第4章 汇编................................................................................................................ - 7 -

4.1 汇编的概念与作用............................................................................................ - 7 -

4.2 在Ubuntu下汇编的命令................................................................................ - 7 -

4.3 可重定位目标elf格式.................................................................................... - 7 -

4.4 Hello.o的结果解析.......................................................................................... - 7 -

4.5 本章小结............................................................................................................ - 7 -

第5章 链接................................................................................................................ - 8 -

5.1 链接的概念与作用............................................................................................ - 8 -

5.2 在Ubuntu下链接的命令................................................................................ - 8 -

5.3 可执行目标文件hello的格式........................................................................ - 8 -

5.4 hello的虚拟地址空间..................................................................................... - 8 -

5.5 链接的重定位过程分析.................................................................................... - 8 -

5.6 hello的执行流程............................................................................................. - 8 -

5.7 Hello的动态链接分析..................................................................................... - 8 -

5.8 本章小结............................................................................................................ - 9 -

第6章 hello进程管理....................................................................................... - 10 -

6.1 进程的概念与作用.......................................................................................... - 10 -

6.2 简述壳Shell-bash的作用与处理流程........................................................ - 10 -

6.3 Hello的fork进程创建过程......................................................................... - 10 -

6.4 Hello的execve过程..................................................................................... - 10 -

6.5 Hello的进程执行........................................................................................... - 10 -

6.6 hello的异常与信号处理............................................................................... - 10 -

6.7本章小结.......................................................................................................... - 10 -

结论............................................................................................................................ - 14 -

附件............................................................................................................................ - 15 -

参考文献.................................................................................................................... - 16 -

第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过程,介绍了使用的硬件、软件环境及开发工具,对产生的中间文件的作用进行了说明。

第2章 预处理

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值