当前位置:网站首页>程序的执行
程序的执行
2022-07-02 06:26:00 【想搞钱的小陈】
CPU执行指令时:
1、首先,CPU读取程序计数器(PC,program counter)指针指向的指令,将它导入指令寄存器(IR, Instruction Register),具体来说,完成读取指令有3个步骤:
- CPU的控制单元操作地址总线指定需要访问的内存地址。(简单理解,就是把PC指针中的值拷贝到地址总线中)。
- CPU通知内存设备准备数据。
- CPU收到内存传来的数据后,将这个数据存入指令寄存器。
完成以上3步,CPU成功读取了PC指针指向指令,存入了指令寄存器。
然而,CPU分析指令寄存器中的指令,确定指令的类型和参数。如果是计算类型的指令,那么就交给逻辑运算单元计算;如果是存储类型的指令,那么由控制单元执行。
PC指针自增,准备获取下一条指令。
比如在32位的机器上,指令是32位4个字节,需要4个内存地址存储,因此PC指针会自增4。
以a=11+15为例。
我们再 Review 下这个问题:程序员写的程序a=11+15是字符串,CPU 不能执行字符串,只能执行指令。所以这里需要用到一种特殊的程序——编译器。编译器的核心能力是翻译,它把一种程序翻译成另一种程序语言。
这里,我们需要编译器将程序员写的程序翻译成 CPU 认识的指令(指令我们认为是一种低级语言,我们平时书写的是高级语言)。
下面我们来详细阐述 a=11+15 的执行过程:
1.编译器通过分析,发现 11 和 15 是数据(代码我们会指明数据类型),因此编译好的程序启动时,会在内存中开辟出一个专门的区域存这样的常数,这个专门用来存储常数的区域,就是数据段,如下图所示:
11 被存储到了地址 0x100;
15 被存储到了地址 0x104;
2.编译器将a=11+15转换为4条指令,程序启动后,这些指令被导入了一个专门用来存储指令的区域,也就是正文段,如上图所示,这4条指令被存储到了0x200-0x20c的区域中:
0x200 位置的 load 指令将地址 0x100 中的数据 11 导入寄存器 R0;
0x204 位置的 load 指令将地址 0x104 中的数据 15 导入寄存器 R1;
0x208 位置的 add 指令将寄存器 R0 和 R1 中的值相加,存入寄存器 R2;
0x20c 位置的 store 指令将寄存器 R2 中的值存回数据区域中的 0x1108 位置。
3.具体执行的时候,PC 指针先指向 0x200 位置,然后依次执行这 4 条指令。
这里还有几个问题要说明一下:
1.变量 a 实际上是内存中的一个地址,a 是给程序员的助记符。
2.为什么 0x200 中代表加载数据到寄存器的指令是 0x8c000100,我们会在下面详细讨论。
3.不知道细心的同学是否发现,在上面的例子中,我们每次操作 4 个地址,也就是 32 位,这是因为我们在用 32 位宽的 CPU 举例。在 32 位宽的 CPU 中,指令也是 32 位的。但是数据可以小于 32 位,比如可以加和两个 8 位的字节。
4.关于数据段和正文段的内容,会在模块四进程和线程部分继续讲解。
边栏推荐
猜你喜欢
随机推荐
[Bert, gpt+kg research] collection of papers on the integration of Pretrain model with knowledge
A slide with two tables will help you quickly understand the target detection
使用Matlab实现:弦截法、二分法、CG法,求零点、解方程
机器学习理论学习:感知机
Two table Association of pyspark in idea2020 (field names are the same)
Implementation of purchase, sales and inventory system with ssm+mysql
Pyspark build temporary report error
使用MAME32K进行联机游戏
Oracle EBS interface development - quick generation of JSON format data
DNS attack details
MySQL组合索引加不加ID
【深度学习系列(八)】:Transoform原理及实战之原理篇
ssm垃圾分类管理系统
[medical] participants to medical ontologies: Content Selection for Clinical Abstract Summarization
[introduction to information retrieval] Chapter 6 term weight and vector space model
Data warehouse model fact table model design
view的绘制机制(二)
Three principles of architecture design
Delete the contents under the specified folder in PHP
叮咚,Redis OM对象映射框架来了







![[introduction to information retrieval] Chapter 7 scoring calculation in search system](/img/cc/a5437cd36956e4c239889114b783c4.png)


