《程序是怎样跑起来的》第一章随笔
对我来说CPU是什么?
相当于人们的大脑,在计算机中是关键核心之一。
CPU是什么?
CPU中文名为中央处理器,相当于计算机的大脑,由寄存器,控制器,运算器和时钟组成
用来将指令的执行顺序组织起来,并按照规定的顺序进行操作,以确保计算机系统能够正常运行。
寄存器
寄存器可用来暂存指令、数据等处理对象,可以看作内存(内存(大)中包含缓存)的一种。
控制器
控制器负责把内存上的指令、数据等读入寄存器,并根据指令的执行结果来控制整个计算机。
运算器
运算器负责运算从内存读入寄存器的数据。
时钟
时钟负责发出CPU开始计时的时钟信号。
我想就是:寄存器就是存东西的,控制器就是控制整体的,运算器就是如何让控制器顺利的控制的,时钟就是给出三大块儿执行多长时间,什么时候执行。
看到汇编语言就能想到它的老邻居:高级语言和机器语言
自己的理解
高级语言:Java、VB、C、C++等,就是自己在软件上输的指令 如print("hello world")
汇编语言:汇编语言、汇编语言优点、IBM PC汇编等等 就是一些容易立即和记忆的缩写来代替一些特定的指令 如ADD SUB INC DEC等等
机器语言:就是0和1代码,
重点 寄存器
程序是把寄存器作为对象来描述的。
汇编语言
汇编采用助记符来编写程序,每一个原本是电器信号的机器语言治理都会有一个想其对应的助记符,通常为指令功能的英语单词的简写。
一点自己的想法
汇编语言顾名思义和秦始皇一样可以将不同的高级语言统一成相同的汇编语言
寄存器的主要分为数据寄存器和地址寄存器
主要种类和功能
累加寄存器:存储执行运算的数据和运算后的数据(运算器算的?)
标志寄存器:存储运算处理后的CPU的状态
程序计数器:存储下一条指令所在内存的地址
基址寄存器:存储书记内存的起始地址(为什么要转换到其他地方?)
变址寄存器:存储基址寄存器的相对地址(优先次序吗?)
通用寄存器:存储任意数据
指令寄存器:存储指令。CPU内部使用,程序员无法通过程序对该寄存器进行读写操作
栈寄存器:存储栈区域的起始地址。
条件分支和循环机制
程序的流程分为顺序执行、条件分支和循环三种。(和职高是学的一模一样)
顺序执行是指按照地址内容的孙晓执行指令。(也就是12345从一执行到五)
条件分支是指根据条件执行任意地址的指令。(也就是如果满足1则执行 2 否则不执行或执行 3 或 4 或 5 等等)
循环是指执行同一地址的指令。(没有条件吗?)
条件分支和循环中使用的是跳转治理
无论当前累加寄存器的运算结果是负数、零、正数,标志寄存器都会将其保存(也负责存放溢出和奇偶效验的结果)
函数的调用机制
函数的调用处理也是通过把程序计数器的值设定成函数的存储地址来实现的。和条件分支,循环的机制有不同
函数的调用需要在完成函数内部的处理后,处理流程在返回到函数调用点(函数调用治理的下一个地址)。
函数调用使用的是call指令,而不是跳转指令。在将函数的入口地址设定到程序计数器之前,call指令会把调用函数 执行的指令地址储存在主存呢。函数处理完毕后,再通过函数的出口来执行return命令。return命令的功能是把保存在栈中的地址设定到程序计数器中。
基址寄存器和变址寄存器的作用
通过这两个寄存器,我们可以对主内存上的特定的内存区域进行划分,从而实现类似于数组的操作
机器语言指令的主要类型和功能
数据传送指令:寄存器和内存、内存和内存、寄存器和外围设备(鼠标、键盘等等)之间的数据读写操作
运算指令:用累加寄存器执行算数运算、逻辑运算、比较运算和位移运算(自己的想法:挪0和1 如01100110右挪变成11001100)
跳转指令:实现分支循环、强制跳转等
call/return指令:函数的调用/返回调用前的地址
热门相关:大明武夫 鬼王绝宠:逆天废材妃 鬼王绝宠:逆天废材妃 天河大帝 布衣官道