欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[CSAPP]计算机系统漫游

程序员文章站 2022-03-26 11:31:05
...

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

信息=位+上下文

#include <stdio.h>
int main()
{
    printf("Hello,world\n");
    return 0;
}

在linux中可以通过hexdump -C hello.c的ASCII码表示:
[CSAPP]计算机系统漫游
由于书中显示的是十进制,故转换成十进制与书中一致,例如\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.
[CSAPP]计算机系统漫游

相关标签: csapp linux gcc