程序如何在CPU中运行(一)

一 cpu和mcu的区别

对于STM32 来说 我们平时说的最多的是 CPU MPU ..等等 他们区别在哪里呢
CPU 不带外围器件 MCU 带外围元器件.可能你们对着这个概念比较模糊。
就好比 MCU 在外围集成了 FLASH 和RAM 来存储数据和程序。对于我们个人的PC
就好比分别对应 硬盘和内存条。
所以 他们最大的区别就能很明显体现出来了.不过 他们是可以通用的.可以把MCU理解成是CPU的升级版本。 

1 cpu的组成部分

他们四部分组成

1 寄存器 :可以用来存放指令 数据处理等等
2 控制器:负责把指令读到寄存器当中
3 运算器:运算送入的数据
4 时钟:发出时钟信号 cpu 才能工作

2 程序是如何被cpu运行的

大概的过程

编译------链接----生成执行文件 ======= 才到cpu
编译大家都知道 

拿一个代码举例
我们来说连接的过程
在这里插入图片描述
链接—》》》生成可执行文件的过程

#include <stido.h>  #:表示链接 include:表示包含 stdio.H:表示输出输入
所以 : #include <stido.h>  表示 链接包含输出输入的h文件进来 
#deinfe aa 123 同时替换 AA 为123   
最后生成了可执行文件 

比较细致的过程
在这里插入图片描述


在cpu执行之前 他们得到一个可执行的程序,可执行程序其实就包换了系列的指令和数据  我们就拿上面的代码来讲解 
指令就是输出输入命令 数据就是实实在在得到的值。cpu能够识别他的指令和数据 那么就可以运行了

二 cpu的工作流程

了解一个器件的原理 我们先从原理图开始入手
在这里插入图片描述
我们把大概分成了 两大部分

1 CPU :寄存器组, 控制器 ,时钟 ,运算器 四部分组成 
2 外设 :数据存储器  (2先了解大概)
注意 数据存储器 并不属于 cpu的组成部分 

1逻辑运算单元和寄存器组

我们 先讲寄存器组和控制单元之间的关系
在这里插入图片描述

OP 表示 指令要执行的操作 ALU:表示运算单位 flag3s 表示标志位 Result :数据
 alu可以进行一些简单运算。
 可以看出 运算的指令来源 寄存器组 经过 ALU(运算单位)得到两个数据 一个是 标志位 一个是数据 
这里的标志位指的是 两个操作数运算后 标志位是否为0 是否为负数. 

用 fputc 举例

int fputc(int ch, FILE *f)//Öض¨Ïò
{

	USART_SendData(USART1,(int16_t)ch);
	while( USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);
	//拿到寄存器组的两个标志位 并且一直P判断是否为0   如果是就一直执行  如果非0 就跳出了循环   
	//并且会返回数据 

	return (ch);
}
拿到寄存器组的两个标志位 经过 ALU 并且一直P判断是否为0   如果是就一直执行  如果非0 就跳出了循环   
并且会返回数据 

另外寄存器除了 可以给运算单位提供数据 他还可以存储数据

在这里插入图片描述

2 逻辑运算单元和数据寄存器

之后 加入了数据寄存器 cpu可以进行复杂的运算
在这里插入图片描述

我们在介绍寄存器的时候 他可以作为存储和提供数据 同时呢 数据寄存器也是有 和 同样的功能
再次提醒  数据寄存器并不是 cpu的其中一部分 ,他是外设存储器。 

数据寄存器和寄存器的区别

我举一个例子 :好比 你在做数字试卷的填空题  你会得到一些中间的结果 但是你不会马上写进去 但是他是进行下一步的条件 如此循环多次 最后的到答案。
寄存器好比是存储 中间的结果的一个器件 ,数据存储器是存储最终答案的器件。  
寄存器强调是 过程   数据存储器 强调的 结果 

3 控制单元

在这里插入图片描述

我们的数据 有可能是 数据存储器提供的 或者是寄存器组提供的
 这时我们就需要一个控制单元来约束他们的工作状态。

控制器的大概功能

指令分析 :分析指令 需要什么操作
确定 数据流向:确定该指令用到的操作数和产生结果的去向.

4 获取指令

上面讲了从寄存器或者从数据存储器获取指令
那么指令又从哪里来呢 我们往下看
在这里插入图片描述

图上我们可以看出 在寄存器获取指令 ,那么就需要指令有序运行,那么现在就需要到PC指针 寄存器 
PC指针寄存器是存放下一个指令的地址.每次地址被更新 ,PC指针都会马上指向下一个地址 ,不管怎么样
他都会保证 地址是多一位的,这样就保证了 程序的有序稳定。 

总结

我们从 PC 指针寄存器 得到指令 控制寄存器从其获取到了指令 并对其指令进行分析 判断他的工作目的 再根据
他的操作数的来源和逻辑运算的单位结果存储位置,从而完成指令要求的cpu执行运算。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值