《程序是怎样跑起来的》第一章:CPU是什么

1. 程序是什么?

我:用来执行特定任务的计算机语言。
2. 程序是由什么组成的?
3. 什么是机器语言?

我:机器能够识别的语言。
4. 正在运行的程序存储在什么位置?

我:内存条
5. 什么是内存地址?
6. 计算机的构成元件中,负责程序的解释和运行的是哪个?

我:CPU

书中答案:

1. 指示计算机每一步动作的一组指令
2. 指令和数据
3. CPU 可以直接识别并使用的语言
4. 内存
5. 内存中,用来表示命令和数据存储位置的数值
6. CPU

总结】本人对程序的底层运行机制仅有模糊理解,读这本书十分必要。

1. cpu的内部构成

寄存器、控制器、运算器和时钟。程序是把寄存器作为对象来描述的。

 

笔记】当时这节看得不仔细,看了后面章节再回头来看 ,就知道寄存器如何对程序起作用了。

2. 程序计数器决定程序流程

【笔记】

  • 上图体现了程序的构成为:指令+数据。
  • 加法实现:累加寄存器+通用寄存器=显示值

3. 程序的流程机制

分为顺序执行、条件分支和循环。 顺序执行是指按照地址内容的顺序执行指令,条件分支是指根据条件执行任意地址的指令。循环是指重复执行同一地址的指令。

以条件执行举例:

笔记】当到达0102地址时,出现了"跳转到0104"的命令。那么如何判断是否跳转呢?是由 CPU 在参考标志寄存器的数值后进行判断。比较运算的结果就存储在标志寄存器中。

4.函数的调用机制

读到这里感觉这个流程越来越复杂了,理由是我们如果使用跳转指令来调用函数,要如何返回原来的指令?需要事先保存函数调用后要执行的指令,并在函数调用结束后返回该指令。

笔记call指令:把调用函数后要执行的指令存储在栈内,再把函数入口地址设置在程序计数器;return指令:把保存在栈中的地址设定在程序技术器。

5.通过地址和索引实现数组

笔记】基址寄存器是数组起点,变址寄存器的值就相当于高级编程语言程序中数组的索引功能。不过为啥要这样来存数组呢?想到了当初被数据结构支配的恐惧。

6.CPU的实际处理

笔记】充其量也就是数据读写、基础运算、跳转/call/return指令这么寥寥几个而已。

7.本章总结

对CPU有了初步了解,以后碰到诸如内存溢出等报错(暂时还不能想到别的),就能理解可怜的小机器了。以及我作为搞大数据的,终于知道逻辑简单的小CPU承担着怎样的重负了,优化代码,责无旁贷。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值