淘宝装修免费模板有哪些网站,好用的在线设计网站,南联网站建设推广,wordpress是php模板吗文章目录 计算机系统信息是什么我们来看看hello在哪 程序被其他程序翻译成不同的格式处理器读取并解释内存中的指令硬件组成 计算机系统
信息是什么
信息是位上下文
下面写一段程序
...(省略#xff09;
printf(hello world);
...
hello.c上面是一段hello程序… 文章目录 计算机系统信息是什么我们来看看hello在哪 程序被其他程序翻译成不同的格式处理器读取并解释内存中的指令硬件组成 计算机系统
信息是什么
信息是位上下文
下面写一段程序
...(省略
printf(hello world);
...
hello.c上面是一段hello程序他首先是从一个源文件开始
那么什么是源文件 源文件也就是源程序是我们程序员通过编辑器创建并保存的文本文件文件名是hello.c 源程序实际上是一个用0或1组成的位比特序列 注意 8位一bit当然只是基础概念也就 是字节每个字节表示程序中的某些文本字符。
我们来看看hello在哪
现在hello程序是以字节序列存储在文件中的每个字节都有一个整数值对于某些字符例如第一个字符的整数值是35他对应的就是字符“#”。第二个字节的整数值为105它对应的字符是“i”依次类推注意每个文本行都是以一个看不见的换行符\n来结束的它所对应的整数值为10.像hello这样的用ASCII码构成的文件我们叫它文本文件。其他为二进制文件 程序被其他程序翻译成不同的格式
hello程序的生命周期是从一个高级C语言程序开始的因为这种形式能够被人读懂然而为了在系统上运行hello程序每条C语句都必须被其他程序转化成一系列的低级机器语言指令。然后这些指令按照一种称为可执行目标程序的格式打好包并以二进制磁盘文件的形式存放起来目标程序也就是可执行目标程序
gcc -o hello hello.c可以看到这就是从源文件到目标文件的转化过程这是通过编译器驱动程序完成的GCC编译器驱动程序读取源程序文件hello.c并把它翻译成一个可执行目标文件hello这个翻译过程可分为四个阶段完成
1.预处理阶段 预处理起修改原始C程序代码比如hello.c中的第一行的#includestdio.h命令告诉预处理器读取系统头文件stdio.h的内容并把它直接插入程序文本中结果就得到了另一个C程序通常是以.i为文件扩展名。
2.编译阶段 编译器把hello.i翻译成文本文件hello.s经过编译以后的就是所谓的汇编语言程序。该程序包含函数main。 如下所示
sub $8,%rsp
move $.lCO,%edi
call puts
mov $0,%eax
add $8,%rsp
ret文本格式表示了机器语言汇编语言是非常有用的因为它为不同高级语言的不同编译器提供了通用的输出 **高级语言pythonjavascriptC**直接就可以调用库函数
3.汇编阶段 汇编阶段是把hello.s变成he ll.o这是一个二进制文件也就是我们的机器可以识别的机器语言
4.链接阶段 printf函数存在于一个print f.o的单独预先编译好的目标文件里面这个文件必须以某种方式合并到我们的hello.o程序中。链接器ld)负责处理这种合并。然后文件执行
处理器读取并解释内存中的指令
hello.c源程序已经被便衣系统翻译成了可执行文件hello并存放在磁盘上。
./hello
hello worldshell上一个命令解释它输出一个提示符等待输入一个命令行然后执行这个命令。如果该命令开头不是一个内置的shell命令那么shell就会假设这是一个可执行文件的名字它将加载并运行这个文件。所以在此例中shell加载并运行hello程序 然后等待程序终止。 hello输出它的消息然后终止
硬件组成
这一块内容太多放到下一篇介绍