【cs基础】CPU是怎样执行代码的

基础概念

  • 程序是指令和数据的组合体,被复制到内存才能运行。
  • 内存地址是保存指令和数据的场所,通过地址标记
  • CPU 能识别和执行的只有机器语言。

CPU 结构

CPU 内部由寄存器、控制器、运算器和时钟四个部分构成,由电流信号相互连通
- 寄存器: 保存指令、数据
- 控制器: 读取内存输入寄存器,控制指令流转
- 运算器: 运算寄存器中的数据
- 时钟:发出计时信号,代表运算速度

寄存器

程序是把寄存器作为对象来描述的,程序运行就是依赖寄存器的控制。
- 存储的内容既可以是指令也可以是数据
- 数据分为“用于运算的数值”和“表示内存地址的数值”两种。数据种类不同,存储该数值的寄存器也不同

累加寄存器 –> 运算的数值
基址寄存器和变址寄存器 –> 表示内存地址的数值
标志寄存器 –> 运算处理后的CPU的状态
程序计数器 –> 下一条指令所在内存的地址
栈寄存器 –> 栈区域的起始地址

程序函数的处理

  • 机器语言的 call 指令和 return 指令能够解决这个问题。函数调用使用的是 call 指令,而不是跳转指令。在将函数的入口地址设定到程序计数器之前,call 指令会把调用函数后要执行的指令地址存储在名为栈的主存内。函数处理完毕后,再通过函数的出口来执行 return 命令。return 命令的功能是把保存在栈中的地址设定到程序计数器中

CPU 处理

CPU 能执行的主要机器语言指令

  • 数据转送指令 –> 寄存器和内存、内存和内存、寄存器和外围设备之间的数据读写操作
  • 运算指令 –> 用累加寄存器执行算术运算、逻辑运算、比较运算和移位运算
  • 跳转指令 –> 实现条件分支、循环、强制跳转等
  • call/return指令 –> 函数的调用/返回调用前的地址

参考:
《程序是怎样跑起来的》一书
http://cs.hnjk.net/T24Courses/2411/main/page/c040200.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章