1. 程序从源文件到目标文件的转化由编译器驱动程序完成,分四个阶段,分别由预处理器(cpp)、编译器(ccl)、汇编器(as)和链接器(ld)完成,这四个程序构成了编译系统
    • 预处理阶段:cpp根据#开头的命令修改原始C程序,得到以 .i 为文件扩展名的另一个C程序。
    • 编译阶段:ccl将C代码翻译成汇编代码,得到 .s 后缀文本文件。
    • 汇编阶段:as将 .s 文件翻译成机器语言指令,并将其打包为可重定位目标程序格式,保存在 .o 后缀的二进制文件中。
    • 链接阶段:ld将程序调用的C标准库中的函数所在文件合并到 .o 程序中,得到可执行目标文件
  1. 系统的硬件组成:总线、I/O设备、主存、处理器
    • 总线:总线是一组电子管道,携带信息字节在各个部件间传递。总线传送定长的字节块,称为
    • I/O设备:每个I/O设备通过一个控制器适配器与I/O总线相连。控制器是I/O设备本身或系统的主印制电路板(主板)上的芯片组,适配器是插在主板插槽上的卡,它们负责在I/O总线和I/O设备之间传递信息。
    • 主存:一个临时存储设备,用来存放程序和程序处理的数据。从物理上说,主存由一组动态随机存取存储器(DRAM)芯片组成。从逻辑上说,存储器是一个线性的字节数组,地址从零开始。
    • 处理器:中央处理单元(CPU)即处理器,是解释(或执行)存储在主存中指令的引擎,其核心是一个大小为一个字的存储设备(或寄存器),被称为程序计数器(PC)。PC指向主存中某条机器语言指令。
  1. 处理器执行指令时依据的模型是由指令集架构决定的。处理器从程序计数器指向的内存处读取指令,解释指令中的位,执行该指令指示的简单操作,然后更新PC,使其指向下一条指令。(P.S:感觉就像是走汇编一样,PC就像IP寄存器欸(╹ڡ╹ ))
    这些简单操作围绕主存、寄存器文件算数/逻辑单元(ALU)进行。寄存器文件是一个小的存储设备,由一些单个字长的寄存器组成。ALU计算新的数据和地址值。如下是一些简单操作的例子:

    • 加载:从主存复制一个字节或字到寄存器,覆盖原来内容。
    • 存储:从寄存器复制一个字节或字到主存的某处地址,覆盖原来内容。
    • 操作:把两个寄存器的内容复制到ALU进行算术运算,将结果存放到一个寄存器中,覆盖原来内容。
    • 跳转:从指令本身抽取一个字,复制到PC中,覆盖原来内容。

    区分处理器的指令集架构和处理器的微体系结构:指令集架构描述每条机器代码指令的效果;微体系结构描述处理器如何实现该效果。

 

四山便是清凉国,一室可为安乐窝
最后更新于 2025-03-06