首页 > 编程语言 >《程序是怎样跑起来的》第一章随笔

《程序是怎样跑起来的》第一章随笔

时间:2024-01-21 19:58:00浏览次数:29  
标签:执行 汇编语言 程序 第一章 地址 指令 内存 寄存器 随笔

对我来说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指令:函数的调用/返回调用前的地址

标签:执行,汇编语言,程序,第一章,地址,指令,内存,寄存器,随笔
From: https://www.cnblogs.com/qitianshijie/p/17978030

相关文章

  • 《系统科学方法概论》第一章读后感
    我是计应232班的徐鲁豫读过系统科学方法概论第一章后我了解了系统思想发展史、什么是系统、系统内部的基本关系、系统规律和系统方法。系统思想发展史分为古代和近代。古代人不仅注意对世界整体性的认识,而且对与整体性本身,也进行过初步的理论探讨。古代思想家对世界或事物整体性......
  • 《程序怎样跑起来的》第一章观后收获
    通过阅读第一章,我了解到了CPU是由运算器、控制器、时钟以及寄存器这四部分组成,其中寄存器又分为基址、变址、累加、指令、栈、通用以及标志寄存器,都分别具有不同的功能负责不同的工作;程序的执行其实通过将高级语言转换成汇编语言调动相应的指令执行任务;指令集通过程序计数器排列,逐......
  • Go语言核心36讲 04 | 程序实体的那些事儿(上)
    我已经为你打开了Go语言编程之门,并向你展示了“程序从初建到拆分,再到模块化”的基本演化路径。一个编程老手让程序完成基本演化,可能也就需要几十分钟甚至十几分钟,因为他们一开始就会把车开到模块化编程的道路上。我相信,等你真正理解了这个过程之后,也会驾轻就熟的。上述套路是......
  • Go语言核心36讲 06 | 程序实体的那些事儿 (下)
    在上一篇文章,我们一直都在围绕着可重名变量,也就是不同代码块中的重名变量,进行了讨论。还记得吗?最后我强调,如果可重名变量的类型不同,那么就需要引起我们的特别关注了,它们之间可能会存在“屏蔽”的现象。必要时,我们需要严格地检查它们的类型,但是怎样检查呢?咱们现在就说。我今天......
  • Go语言核心36讲 05 | 程序实体的那些事儿(中)
    在前文中,我解释过代码块的含义。Go语言的代码块是一层套一层的,就像大圆套小圆。一个代码块可以有若干个子代码块;但对于每个代码块,最多只会有一个直接包含它的代码块(后者可以简称为前者的外层代码块)。这种代码块的划分,也间接地决定了程序实体的作用域。我们今天就来看看它们之......
  • 对程序员来说cpu是什么
    CPU很内存是由许多晶体管组成的电子部件,通常称为IC(IntegratedCircuit,集成电路)。CPU的内部由寄存器、控制器、运算器、和时钟四个部分组成,各个部分之间由电流信号相互连通。寄存器可用来暂存指令数据等处理对象。控制器负责把内存上的指令、数据读入寄存器、并更具指令的执行情况......
  • 无涯教程-Node.js - 扩展程序
    Node.js以单线程模式运行,但是它使用事件驱动来处理并发,它还有助于创建子进程,以在基于多核CPU的系统上利用并行处理。子进程始终具有三个流child.stdin,child.stdout和child.stderr,它们可以与父级的stdio流共享处理。Node提供了child_process模块,该模块具有以下三种创建......
  • 程序是怎样跑起来的观后感
    读完之后我理解了CPU的内部构成和CPU的作用。CPU各个部分之间由电流信号相互连通,CPU可以直接识别并使用的语言。在计算机的构成元素之中CPU负责程序的解释和运行。并且理解程序是什么由什么组成。程序是把寄存器作为对象来描述的。程序的运行主要是由硬件和软件共同完成的。当我们......
  • 程序员数学之-IEEE754规范
    1定点数与浮点数在现实生活中,不仅要有整数,还需要小数,计算机怎么表示小数呢?有两种方式:定点数与浮点数定点数(FixedPointNumber):顾名思义,小数点位置固定,例如常见的Qm.n表示法,共需1(符号位)+m(整数位)+n(小数位)bit位来表示数据,如Q7,Q15,Q31等数据类型。其优点是:计算速度快;缺点......
  • 程序是怎样跑起来的第一章读后感
    了解了对于程序员来说CPU是什么,清楚的知道程序是指示计算机每一步动作的指令,程序是由指令和数据组成的,了解了CPU能够直接识别和执行的只有机器语言。CPU的内部由寄存器、控制器、运算器、时钟组成,内存是指的是计算机的主储存器简称主存。主存主要负责存储指令和数据,主存由可读写的......