当前位置: 代码迷 >> 驱动开发 >> cpu全部指令完成后又干什么呢
  详细解决方案

cpu全部指令完成后又干什么呢

热度:174   发布时间:2016-04-28 10:02:44.0
cpu所有指令完成后又干什么呢?
想问几个个小白问题 
1.cpu所有指令完成后又干什么呢?
2.cpu怎么识别指令是否读完了呢?
3.cpu遇到无效的指令会干什么呢?
4.cpu遇到全0的指令会干什么呢?
------解决思路----------------------
引用:
想问几个个小白问题 
1.cpu所有指令完成后又干什么呢?
2.cpu怎么识别指令是否读完了呢?
3.cpu遇到无效的指令会干什么呢?
4.cpu遇到全0的指令会干什么呢?

1、你是指程序指针(PC)增加到最大值之后的行为吗?当然是回绕,从0地址继续开始执行。
2、CPU不知道指令是否执行完,只是机械地增加PC或根据指令要求转移到其它地址执行。
3、CPU遇到无效指令的行为各不相同,有的产生异常(类似中断),到预定的地方开始执行。
4、全0根据不同的CPU指令集的定义行为各不相同,或许是一条有效的指令,或是无效的指令(此时同3)。
------解决思路----------------------
1.cpu所有指令完成后又干什么呢?
任何系统软件都是死循环操作(比如while(1),因此指令是不会执行完的,极端的,你没有使用死循环,估计最终会死机,(遇到非指令码的时候,应该就死机,也就是所谓的跑飞)
2.cpu怎么识别指令是否读完了呢?
不会识别,cpu都是取出一条,根据指令(jmp之类)或指令的长度(普通指令)确定确定下一指令的位置,周而复始
3.cpu遇到无效的指令会干什么呢?
见1
4.cpu遇到全0的指令会干什么呢?
应该是nop吧
------解决思路----------------------
1. 正常情况下cpu指针始终在循环中(没有所有指令完成的正常状态),如果没有任务就绪,有操作系统的就会进入idle进程,比如wfe,wfi之类的低耗状态,如果有事件发生,就去响应事件。
2. 正常情况下像一个完整的圆,没有起点没有终点,所以不用识别也没法识别指令是否读完。
3. 大多数架构会有一种异常称为未定义指令,触发这种异常有几种解决方式,1)异常挂起 2)激发协处理器比如浮点处理器等执行异常处理指令 3)进入软件异常,实现指令扩展
3. 多数架构认为全0是空操作
  相关解决方案