编译器生成的汇编语句执行顺序为什么与C代码顺序不同?

如题所述

第1个回答  2018-03-21

编译器不仅是无序的,而且还展开、合并、删除代码(如果没有发现代码),,,C语言是好的,和C++编译器编译,经常连上帝也不知道结果。


暂停现代CPU为了弥补CPU和内存之间的速度差距的接入方案,以所谓的缓存(L1,L2,L3;在CPU芯片的速度比内存快得多,但容量很小),CPU缓存中常见的事情似乎保持镜子,需要在缓存中直接读取使用的数据是好的,比内存快几倍的速度。

内存引起的停顿:众所周知,内存的速度低于处理器的速度。因此,当CPU想从内存中读取或写入数据时,内存会说:“我还没有准备好!”(发送CPU信号,CPU没有完成)什么都没有,甚至连CD都充满蓝色也熄灭了技巧。所以只能暂停(相当于没有插入操作指令)等等。

这里你需要给出一个概念,就是在执行阶段(第三级)中的分支指令,以获得目标地址是否跳转和跳转,而(指令地址感)下一个指令已经处于解码阶段,下一个指令只是发出指令代码。根据我的习惯,compilting(大多数人),下一个指令是不跳分支指令。跳转分支的指令是另一个遥远的地方。但如果只是在跳跃的时候…这两个时钟周期被浪费了。那怎么回事?…这两个指令是无效的(相当于NOP指令),再由跳转目标地址(这就是所谓的“刷”是也)。

注意名字的区别。名称风险是两个没有数据流的指令,数据冒险是两个指令之间的数据流。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网