[CSAPP]计算机系统漫游

深入理解计算机系统这本书在豆瓣评分竟罕见的到了9.9分!
目前在读第三版,已读完前两章,补充在阅读过程中的笔记部分,如有任何疑问请评论指出。
本系列读书笔记不会记录全部内容,只是记录与实战相关、存在疑惑的部分,个人认为本书中的每一段话每一个字都很重要!

信息=位+上下文
#include <stdio.h>
int main()
{
    printf("Hello,world\n");
    return 0;
}

在linux中可以通过hexdump -C hello.c的ASCII码表示:

由于书中显示的是十进制,故转换成十进制与书中一致,例如\n 十六进制0a 对应的10进制 10

高级语言–>机器语言

为了能让hello.c运行,每条C语言(高级语言)需转换为低级语言指令。然后这些指令按照一种称为可执行目标程序的格式打包好,并以二进制磁盘文件的形式存放起来。目标程序也称为可执行目标文件。
例如:
gcc -o hello hello.c

预处理阶段

由于程序第一行包含了stdio.h头文件,在预处理阶段会把stdio.h的内容直接插入程序文本中,从hello.c—>hello.i.

编译阶段

编译器将文本文件hello.i翻译成文本文件hello.s,它包含汇编语言.

汇编阶段

汇编器将hello.s翻译成机器语言指令,把这些指令打包成一种叫做可重定位目标程序(relocatable object program)的格式。生成文件hello.o,hello.o是一个而仅仅只文件。

链接阶段

hello程序调用了printf()函数,printf函数存在于一个名为printf.o的单独的预编译好了的目标文件中,而这个文件必须以某种方式合并到我们的hello.o程序中。最后生成可执行文件hello.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值