内存异常是cpu发现的吗?
用户态:memset(0,1,1)会报段错误,请问,是谁发现的异常? 是cpu发现的 其实是集成在CPU里面的MMU发现的?O(∩_∩)O~ 可能的情况分析如下,在汇编级别,cpu执行了一条指令,触发了异常。这一条指令很可能是(汇编忘光了,见谅)
move 0 0
那么执行这条指令时,到底发现了什么?_? 回复 4# forxy
你知道保险丝不?短路保险丝就烧断了,计算机里面不是“烧断”,而是触发异常处理程序执行。。 回复 4# forxy
假设这条指令对应的机器码为0x11,并且简单认为CPU里面是下面这样的电路,并且简单认为机器码中的0、1都代表开、关,则两个开关都关,就短路了。
回复 4# forxy
这应该不算是“检测”吧,是一个基本的物理现象,因有了,自然就有果{:qq23:} 。。 nosay同学说的挺有意思。
lz问的问题都是体系架构的基础知识。cpu在执行指令的时候,有取值,解码,执行,写回等基本流水线步骤。在执行阶段会判断地址是否合法,不合法的话,会抛出异常
回复 8# amarant
lz可能和我一样,觉得cpu又不是人,为什么会“判断”,所以仍然不知道异常产生的源头。
我是想表达所谓的判断,最终只是基本的物理现象,电路达到某种状态时,就出现短路,即短路的出现,是电路到达某种状态,而不是由谁判断产生的,判断是产生这种状态之后的事。
小菜鸟之见,版主大牛别见笑~ 回复 9# _nosay
回复的挺好的。很生动。很用心的回复。坛子就需要你这样的人。加油