forxy 发表于 2016-06-17 16:31

内存异常是cpu发现的吗?

用户态:memset(0,1,1)
会报段错误,请问,是谁发现的异常?

amarant 发表于 2016-06-18 21:32

是cpu发现的

captivated 发表于 2016-06-20 18:20

其实是集成在CPU里面的MMU发现的?O(∩_∩)O~

forxy 发表于 2016-06-22 00:43

可能的情况分析如下,在汇编级别,cpu执行了一条指令,触发了异常。这一条指令很可能是(汇编忘光了,见谅)
move 0 0
那么执行这条指令时,到底发现了什么?_?

_nosay 发表于 2016-06-22 08:50

回复 4# forxy

你知道保险丝不?短路保险丝就烧断了,计算机里面不是“烧断”,而是触发异常处理程序执行。。

_nosay 发表于 2016-06-22 09:07

回复 4# forxy

假设这条指令对应的机器码为0x11,并且简单认为CPU里面是下面这样的电路,并且简单认为机器码中的0、1都代表开、关,则两个开关都关,就短路了。

_nosay 发表于 2016-06-22 09:19

回复 4# forxy

这应该不算是“检测”吧,是一个基本的物理现象,因有了,自然就有果{:qq23:} 。。

amarant 发表于 2016-06-22 09:28

nosay同学说的挺有意思。
lz问的问题都是体系架构的基础知识。cpu在执行指令的时候,有取值,解码,执行,写回等基本流水线步骤。在执行阶段会判断地址是否合法,不合法的话,会抛出异常


_nosay 发表于 2016-06-22 10:59

回复 8# amarant

lz可能和我一样,觉得cpu又不是人,为什么会“判断”,所以仍然不知道异常产生的源头。
我是想表达所谓的判断,最终只是基本的物理现象,电路达到某种状态时,就出现短路,即短路的出现,是电路到达某种状态,而不是由谁判断产生的,判断是产生这种状态之后的事。
小菜鸟之见,版主大牛别见笑~

amarant 发表于 2016-06-22 13:56

回复 9# _nosay


    回复的挺好的。很生动。很用心的回复。坛子就需要你这样的人。加油
页: [1] 2 3
查看完整版本: 内存异常是cpu发现的吗?