程序是怎样跑起来的:第一章-对程序员来说CPU是什么
文章目录
- 一: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是寄存器的集合体的原因”
eax
和ebp
都是寄存器的名称,正如内存的存储场所使用地址编号区分,寄存器的种类则是通过名字区分
上面的描述可能对于新手来说有点晦涩难懂,但不要担心,你不需要了解的很深入。只需要明白,使用高级语言编写的程序会在编译后转化为机器语言,然后再通过CPU内部的寄存器来处理
(2)寄存器的分类
不同类型的CPU,其内部寄存器的数量,种类以及寄存器的存储的数值范围都是不同的。根据功能,寄存器大致可以划分为八类
- 上述代码中的
eax
和ebp
分别就是累加寄存器和基址寄存器
(3)程序员眼中的CPU
程序员眼中的CPU是寄存器的集合体
程序计数器,累加寄存器,标志寄存器,指令寄存器和栈寄存器都只有一个;基址寄存器,变址寄存器和通用寄存器都不止一个
程序是怎样跑起来的:第一章-对程序员来说CPU是什么相关推荐
- windows核心编程-第一章 对程序错误的处理
第一章-对程序错误的处理 在开始介绍Microsoft Windows 的特性之前,必须首先了解 Wi n d o w s的各个函数是如何进行错误处理的. 当调用一个Wi n d o w s函数时,它 ...
- 第一章 PX4程序编译过程解析
版权声明:本文为博主原创文章,未经博主允许不得转载. 第一章 PX4程序编译过程解析 PX4是一款软硬件开源的项目,目的在于学习和研究.其中也有比较好的编程习惯,大家不妨可以学习一下国外牛人的编程习惯 ...
- 微信小程序零基础入门_第一章 小程序和开发者工具的介绍
第一章 小程序和开发者工具的基本介绍 1.1 小程序的开发工具 微信小程序的开发者需要先通过微信公众平台注册开发者账号.在微信公众平台网页中的账号分类->小程序中有着较为详细的注册介绍,可以较为 ...
- Android群英传神兵利器读书笔记——第一章:程序员小窝——搭建高效的开发环境
Android群英传神兵利器读书笔记--第一章:程序员小窝--搭建高效的开发环境 目录 1.1 搭建高效的开发环境之操作系统 1.2 搭建开发环境之高效配置 基本环境配置 基本开发工具 1.3 搭建程 ...
- 对程序员来说CPU是什么?
对程序员来说CPU是什么? 前言 本文参照<程序是怎样跑起来> 这本书,不断更新我的博文,一是用于填补我的计算机基础"空白",二是通过对该书提到的知识进行总结和凝练以加 ...
- C语言编程入门之--第一章初识程序
导读:计算机程序无时不刻的影响着人类的生活,现代社会已经离不开程序,程序的作用如此巨大,那么程序到底是什么呢?本章主要讨论程序的概念,唤起读者对程序的兴趣,同时对C语言程序与其它语言程序进行比较,说明 ...
- rw_程序是怎样跑起来的 7-12章
2016.10.26 - 11.01 <程序是怎样跑起来的>7-12章 - 矢泽久雄 / 著 - 李俊峰 / 译 个人学习笔记. 虽然计算机领域新技术在不断涌现,但计算机能处理的事情始终是 ...
- 微信小程序基础入门(一):小程序界面介绍创造自己的第一个小程序
承接小程序配置之后 ,先对小程序开发软件的界面进行介绍: 然后进入第一个小程序的构造:获取用户登陆信息 通过左上角的 "+"添加页面 然后创建第一个功能页面 然后页面构造完成:各部 ...
- 请用python3编写一个计算器的控制台程序_二、软件工程慕课第一章作业题——编写一个计算器...
一.题目描述 请用Python3编写一个计算器的控制台程序,支持加减乘除.乘方.括号.小数点,运算符优先级为括号>乘方>乘除>加减,同级别运算按照从左向右的顺序计算. 二.输入描述 ...
最新文章
- 突然!iPhone 12/12 Pro从苹果天猫旗舰店下架,不愿参加双11活动?
- Ubuntu下U盘变成只读的解决方法
- Servlet CDI Example Analysis
- Python 进阶之路 (五) map, filter, reduce, zip 一网打尽
- zabbix 2.4.5 自定义key监控redis
- webstorm汉化后乱码现象解决
- 单例模式几种实现方式和代码
- love2d 开发环境
- 交通灯系统设计 educoder实训项目 logisim实现
- 基于ARM的嵌入式SMTP远程控制设计
- Java版的TxT转换器下载_TXT转MP3格式转换器
- Java 7的新特性:文件监视器
- 中小企业信息安全:基本原则
- 小程序源码:端午送粽子祝福微信小程序源码下载支持打赏模式带背景音乐
- 大数据常见面试题 Hadoop篇(1)
- java如何调用接口股票的?
- 用 Windows Media Center 免费看大片 (一)
- 岁末将至,再见 2021
- STM32HAL库微秒延时(μs)
- D1net阅闻:微信支付上线新一轮鼓励金活动
热门文章
- 快来!前端君喊你加入快驾网智囊团
- html人物动画效果图,9款用HTML5/CSS3制作的动物、人物动画
- el table 固定表头和首行_表头太太太复杂了,如何批量打印?简单!
- java assert语句未执行_Java陷阱之assert关键字
- flash java 6,为Flash构建 Java WebService
- python解析原理_python爬虫原理
- Science发布基因组比对革新技术:泛基因组学映射工具Giraffe
- 典型医学设计实验GEO数据分析 (step-by-step) - 数据获取到标准化
- oracle临时表空间暴涨,如何解决Oracle临时表空间过大
- abovedisplayskip无效_latex公式图片行间距段间距调整心得 -