《程序是怎样跑起来的》矢泽久雄[日] - 读书笔记

本文是《程序是怎样跑起来的》读书笔记,深入探讨CPU的结构,包括寄存器、控制器、运算器和时钟的作用。讲解了二进制运算、小数运算以及内存的使用,涉及栈、队列、链表和二叉查找树等数据结构。还介绍了内存与硬盘的关系、数据压缩方法和程序的运行环境。文章还涵盖了从源代码到可执行文件的编译和链接过程,操作系统与应用的交互,以及通过汇编语言理解程序实际构成。最后,简要讨论了硬件控制方法和人工智能在程序运行中的作用。
摘要由CSDN通过智能技术生成

《程序是怎样跑起来的》矢泽久雄[日] 读书笔记,详细建议阅读原版图书学习

一 CPU是什么

1 程序由指令与数据组成,是指示计算机每一步动作的一组指令,机器语言指的是CPU可以直接识别并使用的语言。

2 程序运行流程示例图

3 IC: 集成电路

4 CPU的内部由寄存器、控制器、运算器和时钟四个部分构成,各部分之间由电流信号相互连通。寄存器可用来暂存指令、数据等处理对象,可以将其看作是内存的一种。根据种类的不同,一个CPU内部会有20~100个寄存器。控制器负责把内存上的指令、数据等读入寄存器,并根据指令的执行结果来控制整个计算机。运算器负责运算从内存读入寄存器的数据。时钟负责发出CPU开始计时的时钟信号,其实所谓的控制就是指数据运算以外的处理(主要是数据输入输出的时机控制),需要着重了解的是寄存器。

5 程序是把寄存器作为对象来描述的。机器语言级别的程序是通过寄存器来处理的。也就是说,在程序员看来“CPU是寄存器的集合体”。

程序计数器决定着程序的流程。“跳转到0104地址”这个指令间接执行了“将程序计数器设定成0104地址”这个操作。

是否执行跳转指令,则由CPU在参考标志寄存器的数值后进行判断。

基址寄存器和变址寄存器。通过这两个寄存器,我们可以对主内存上特定的内存区域进行划分,从而实现类似于数组的操作。

6 汇编语言和机器语言基本上是一一对应的。通常我们将汇编语言编写的程序转化成机器语言的过程称为汇编;反之,机器语言程序转化成汇编语言程序的过程则称为反汇编。

eax和ebp是CPU内部的寄存器的名称。内存的存储场所通过地址编号来区分,而寄存器的种类则通过名字来区分。

7 CPU执行比较的机制很有意思,因此请大家务必牢记。例如,假设要比较累加寄存器中存储的XXX值和通用寄存器中存储的YYY值,执行比较的指令后,CPU的运算装置就会在内部(暗中)进行XXX-YYY的减法运算

8 函数的调用需要在完成函数内部的处理后,处理流程再返回到函数调用点(函数调用指令的下一个地址)。call指令会把调用函数后要执行的指令地址存储在名为栈[插图]的主存内。函数处理完毕后,再通过函数的出口来执行return命令。return命令的功能是把保存在栈中的地址设定到程序计数器中。在编译高级编程语言的程序后,函数调用的处理会转换成call指令,函数结束的处理则会转换成return指令。

9 CPU可以进行的处理非常少。虽然高级编程语言编写的程序看起来非常复杂,但CPU实际处理的事情就是这么简单。

二 二进制

1 IC的所有引脚,只有直流电压0V或5V[插图]两个状态。也就是说,IC的一个引脚,只能表示两个状态。

2 计算机所处理的信息的基本单位是8位二进制数。8位二进制数被称为一个字节。

3 二进制数所特有的运算,也是计算机所特有的运算,因此可以说是了解程序运行原理的关键。移位运算指的是将二进制数值的各数位进行左右移位(shift=移位)的运算。移位有左移(向高位方向)和右移(向低位方向)两种。>运算符。>运算符的左侧是被移位的值,右侧表示要移位的位数。

对程序员来说,掌握位运算和逻辑运算的机制是一项基本技能,所以一定要掌握。十进制数左移后会变成原来的10倍、100倍、1000倍……同样,二进制数左移后就会变成原来的2倍、4倍、8倍……反之,二进制数右移后则会变成原来的1/2、1/4、1/8

4 二进制数中表示负数值时,一般会把最高位作为符号来使用,因此我们把这个最高位称为符号位。计算机在做减法运算时,实际上内部是在做加法运算。

为此,在表示负数时就需要使用“二进制的补数”。补数就是用正数来表示负数,为了获得补数,我们需要将二进制数的各数位的数值全部

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值