您的位置:首页 > 理论基础

计算机系统(三)CPU读并解释存储在存储器中的指令

2015-08-13 17:04 295 查看
TTcdeMacBook-Air:SystemCompiler TTc$ gcc -E hello.c -o hello.i

TTcdeMacBook-Air:SystemCompiler TTc$ open .

TTcdeMacBook-Air:SystemCompiler TTc$ gcc -O hello.c -o hello.o

TTcdeMacBook-Air:SystemCompiler TTc$ ls

hello.c hello.i hello.o hello.s

TTcdeMacBook-Air:SystemCompiler TTc$ open .

TTcdeMacBook-Air:SystemCompiler TTc$ ls

hello.c hello.i hello.o hello.s
TTcdeMacBook-Air:SystemCompiler TTc$ gcc -o hello hello.c

TTcdeMacBook-Air:SystemCompiler TTc$ ls

hello hello.c hello.i hello.o hello.s

TTcdeMacBook-Air:SystemCompiler TTc$ ls

hello hello.c hello.i hello.o hello.s

TTcdeMacBook-Air:SystemCompiler TTc$ ./hello

hello world
TTcdeMacBook-Air:SystemCompiler TTc$

此时 helllo.c源程序 已经经过 编译系统翻译成了 可执行目标文件 hello  (在 win上为 PE文件  在Unix下为 ELF文件)

shell 是一个命令行解释器, 这时候 shell 加载并运行 hello 程序,然后等待程序终止,hello 程序在 显示器上 输出 它的信息,然后终止。 shell 随后输出一个提示符,等待用户 的下一个输入 命令

系统的硬件组成



1:总线:贯穿整个系统的是一组电子管道,它携带byte 并负责在各个 部件 之间传递。 一般 传送的是 固定长度的 byte块,也就是 word(字)

2:I/O设备 :系统与外部世界的联系通道(输入/输出IO);每个IO设备都是通过一个控制器或适配器与IO总线 相连接。(控制器 是印制在主板上的芯片组上或者 IO设备本身、而适配器是一块插在主板槽上的 卡,功能一样都是在IO总线和IO设备之间传递信息)

3:主存:一个临时的存储设备,在CPU读取指令执行时,用来临时存放程序和数据,
           从物理角度说,主存是由一组动态随机存取器(DRAM)芯片组成
           从逻辑角度说,存储器是一个线性的字节数组,byte[ ]; 每个byte 都有唯一的地址(就是数组索引),从0开始,一般来说:组成程序的每条 机器指令 都由不同数量的 byte 组成,

4:CPU: 处理器,是解释或者执行存储在主存中 指令的 引擎。  核心组成: 一个字长的存储设备(寄存器->程序计数器 PC),在任何时刻,PC都指向主存中的某条机器语言指令(本质上是 该条指令的地址)


  步骤:A: 从系统通电开始,直到系统断电,CPU都在不断地从执行PC读取(指向)的指令并更新PC,使其指向下一条指令。

            B:CPU看上去是按照一个非常简单地指令 执行模型来操作的,这个 模型是由 指令集 结构来决定的。 在这个模型中,指令按照严格的顺序执行

           C:  CPU从PC取指令,解释指令中的bit,执行该指令 代表的简单操作,然后更新PC,使其指向下一条指令,而这条新的指令 不一定与 上一条(刚刚从存储器中取出的指令)相邻。   在C中就是 jump  ,这样的操作 非常少,而且操作都是围绕着 主存, 寄存器文件 和ALU(算术/逻辑单元)经行的。
  
    


5:  寄存器文件:  是一个小得存储设备,由一些 1字长的 寄存器 组成,每个寄存器都有唯一的名字。 ALU 计算 新的数据 和 地址值
           A:load:把一个byte 或者一个word 从 主存 copy 到 寄存器(cover)覆盖掉寄存器原来的内容。
         
           B:  save :把一个byte 或者一个word 从 寄存器 copy 到 主存的某个位置。以覆盖这个位置原来的内容

           C:operate :把两个寄存器的内容copy到ALU,ALU对这两个word 做算术操作,并将结果存放到 一个寄存器 中,以覆盖该寄存器中原来的内容。

           D:jump :从指令本身中抽取一个word,并将这个word  copy到 PC中,以覆盖PC中原来的值

CPU 看起来只是它的指令集 结构的简单实现,但是实际上是 现代cpu实用了 非常复杂的 机制来加速。
    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: