欢迎使用CSDN-markdown编辑器

计算机系统漫游

1.1信息就是位+上下文


  • 关键字 [位|比特|ASCII|文本文件]

文本文件字符组成的,而源程序实际是由0和1组成的位(bit)序列
8个位被组织成一组,被称为字节。每个字节都代表程序中的某些文本字符
了解了文本文件在电脑中的实际存储方式(字节)

1.2程序被其他程序翻译成不同的格式

一个高级语言编写的程序是如何变成机器可以识别的命令的?
为了在系统上运行,必须把高级语言C转换成一系列的地级机器语言指令。然后这些指令按照一种称为可执行目标程序的格式打好包,并以二级制磁盘文件的形式存放起来。

linux>gcc -o hello hello.c

GCC编译器驱动读取 hello.c文件,并把它翻译成一个可执行目标文件 hello 这个翻译分为4个阶段。
执行这四个阶段的程序(预处理器,编译器,汇编器,链接器)

Created with Raphaël 2.1.0 Hello.c 预处理器(cpp)生成hello.i 编译器(cc1)生成hello.s 汇编器(as)生成hello.o 连接器(ld)生成hello


  • 预处理阶段

预处理器(cpp)以字符#开头的命令,修改原始的C程序。比如hello.c第一行为#include
    main:
        subq $8,%rsp
        movl $.LCO,%edi
        call puts
        movl $0,%eax
        addq $8,%rsp
        ret

每条语句都以一种文本格式描述了一条地级机器语言指令
汇编语言为不同高级语言提供通用的输出语句。C编译器和Fortran编译器产生的输出文件用的都是一样的汇编语言。

你可能感兴趣的:(计算机组成原理,计算机组成)