文章目录

  • 一:CPU的内部结构解析
    • (1)CPU的作用
    • (2)CPU的构成
    • (3)简单了解内存
    • (4)程序运行的简单描述
  • 二:CPU是寄存器的集合体
    • (1)CPU是寄存器的集合体
    • (2)寄存器的分类
    • (3)程序员眼中的CPU

CPU是英文Central Processing Unit(中央处理器)的缩写,也就是计算机的大脑,其内部由数以万计的晶体管构成。这些都是大家耳熟能详的,除此之外,程序员还需要理解CPU如何运行,特别是要弄清楚负责保存指令和数据的寄存器的机制。了解了寄存器,也就自然而然理解了程序运行机制。

一:CPU的内部结构解析

(1)CPU的作用

下面这一张图是程序运行的流程,假设你用C语言编写了一段程序

其中CPU所负责的就是解释和运行最终转换为机器语言的程序内容
CPU和内存是由许多晶体管组成的电子部件,通常称为IC(Integrated Circuit集成电路)

(2)CPU的构成

CPU的四个构成部分如下

他们各自功能如下

(3)简单了解内存

我们说的内存通常指的是计算机的主存储器,也称为主存。它通过控制芯片等与CPU相连,主要负责存储指令和数据,主存由可读写的元素构成,每个字节(1个字节等于8个二进制位)都带有一个地址编号,CPU可以通过改地址读取内存中的指令和数据,当然也可以写入数据。内存具有断电易失性

(4)程序运行的简单描述

启动程序后,根据时钟信号,控制器从内存中读取指令和数据,通过对这些指令加以解释和运行,运算器对数据进行运算,控制器根据运算结果控制计算机

二:CPU是寄存器的集合体

首先明确一点,CPU的四个部分中,我们只需重点关注寄存器即可
为什么寄存器这么重要呢,因为程序是把寄存器作为对象来描述的

(1)CPU是寄存器的集合体

首先请看下面用汇编语言编写的一段程序

汇编语言采用助记符来编写程序,助记符通常为一些具有某种指令功能的英语单词的缩写,比如数据的存储(move)和相加(addition)。汇编语言和机器语言基本是对应的,这也是我们用汇编来说明CPU运行的原因,通常我们将汇编语言编写的程序转化为机器语言的过程称为汇编,而相反过程则称之为反汇编

从上述代码中可以看出,机器语言级别的程序是通过寄存器处理的,也就是其直接操控寄存器,这也是为什么说“CPU是寄存器的集合体的原因”

eaxebp都是寄存器的名称,正如内存的存储场所使用地址编号区分,寄存器的种类则是通过名字区分

上面的描述可能对于新手来说有点晦涩难懂,但不要担心,你不需要了解的很深入。只需要明白,使用高级语言编写的程序会在编译后转化为机器语言,然后再通过CPU内部的寄存器来处理

(2)寄存器的分类

不同类型的CPU,其内部寄存器的数量,种类以及寄存器的存储的数值范围都是不同的。根据功能,寄存器大致可以划分为八类

  • 上述代码中的eaxebp分别就是累加寄存器和基址寄存器

(3)程序员眼中的CPU

程序员眼中的CPU是寄存器的集合体
程序计数器,累加寄存器,标志寄存器,指令寄存器和栈寄存器都只有一个;基址寄存器,变址寄存器和通用寄存器都不止一个

程序是怎样跑起来的:第一章-对程序员来说CPU是什么相关推荐

  1. windows核心编程-第一章 对程序错误的处理

    第一章-对程序错误的处理 在开始介绍Microsoft Windows 的特性之前,必须首先了解 Wi n d o w s的各个函数是如何进行错误处理的. 当调用一个Wi n d o w s函数时,它 ...

  2. 第一章 PX4程序编译过程解析

    版权声明:本文为博主原创文章,未经博主允许不得转载. 第一章 PX4程序编译过程解析 PX4是一款软硬件开源的项目,目的在于学习和研究.其中也有比较好的编程习惯,大家不妨可以学习一下国外牛人的编程习惯 ...

  3. 微信小程序零基础入门_第一章 小程序和开发者工具的介绍

    第一章 小程序和开发者工具的基本介绍 1.1 小程序的开发工具 微信小程序的开发者需要先通过微信公众平台注册开发者账号.在微信公众平台网页中的账号分类->小程序中有着较为详细的注册介绍,可以较为 ...

  4. Android群英传神兵利器读书笔记——第一章:程序员小窝——搭建高效的开发环境

    Android群英传神兵利器读书笔记--第一章:程序员小窝--搭建高效的开发环境 目录 1.1 搭建高效的开发环境之操作系统 1.2 搭建开发环境之高效配置 基本环境配置 基本开发工具 1.3 搭建程 ...

  5. 对程序员来说CPU是什么?

    对程序员来说CPU是什么? 前言 本文参照<程序是怎样跑起来> 这本书,不断更新我的博文,一是用于填补我的计算机基础"空白",二是通过对该书提到的知识进行总结和凝练以加 ...

  6. C语言编程入门之--第一章初识程序

    导读:计算机程序无时不刻的影响着人类的生活,现代社会已经离不开程序,程序的作用如此巨大,那么程序到底是什么呢?本章主要讨论程序的概念,唤起读者对程序的兴趣,同时对C语言程序与其它语言程序进行比较,说明 ...

  7. rw_程序是怎样跑起来的 7-12章

    2016.10.26 - 11.01 <程序是怎样跑起来的>7-12章 - 矢泽久雄 / 著 - 李俊峰 / 译 个人学习笔记. 虽然计算机领域新技术在不断涌现,但计算机能处理的事情始终是 ...

  8. 微信小程序基础入门(一):小程序界面介绍创造自己的第一个小程序

    承接小程序配置之后 ,先对小程序开发软件的界面进行介绍: 然后进入第一个小程序的构造:获取用户登陆信息 通过左上角的 "+"添加页面 然后创建第一个功能页面 然后页面构造完成:各部 ...

  9. 请用python3编写一个计算器的控制台程序_二、软件工程慕课第一章作业题——编写一个计算器...

    一.题目描述 请用Python3编写一个计算器的控制台程序,支持加减乘除.乘方.括号.小数点,运算符优先级为括号>乘方>乘除>加减,同级别运算按照从左向右的顺序计算. 二.输入描述 ...

最新文章

  1. 突然!iPhone 12/12 Pro从苹果天猫旗舰店下架,不愿参加双11活动?
  2. Ubuntu下U盘变成只读的解决方法
  3. Servlet CDI Example Analysis
  4. Python 进阶之路 (五) map, filter, reduce, zip 一网打尽
  5. zabbix 2.4.5 自定义key监控redis
  6. webstorm汉化后乱码现象解决
  7. 单例模式几种实现方式和代码
  8. love2d 开发环境
  9. 交通灯系统设计 educoder实训项目 logisim实现
  10. 基于ARM的嵌入式SMTP远程控制设计
  11. Java版的TxT转换器下载_TXT转MP3格式转换器
  12. Java 7的新特性:文件监视器
  13. 中小企业信息安全:基本原则
  14. 小程序源码:端午送粽子祝福微信小程序源码下载支持打赏模式带背景音乐
  15. 大数据常见面试题 Hadoop篇(1)
  16. java如何调用接口股票的?
  17. 用 Windows Media Center 免费看大片 (一)
  18. 岁末将至,再见 2021
  19. STM32HAL库微秒延时(μs)
  20. D1net阅闻:微信支付上线新一轮鼓励金活动

热门文章

  1. 快来!前端君喊你加入快驾网智囊团
  2. html人物动画效果图,9款用HTML5/CSS3制作的动物、人物动画
  3. el table 固定表头和首行_表头太太太复杂了,如何批量打印?简单!
  4. java assert语句未执行_Java陷阱之assert关键字
  5. flash java 6,为Flash构建 Java WebService
  6. python解析原理_python爬虫原理
  7. Science发布基因组比对革新技术:泛基因组学映射工具Giraffe
  8. 典型医学设计实验GEO数据分析 (step-by-step) - 数据获取到标准化
  9. oracle临时表空间暴涨,如何解决Oracle临时表空间过大
  10. abovedisplayskip无效_latex公式图片行间距段间距调整心得 -