“ 一位机照样会程序跑飞,照样会死机。”
一句话打破了我们公司20年的理论/实践经验证明。
程序跑飞的机理是由于多字节指令造成,单字节指令程序不会跑飞,因为飞来飞去,都落在自己的程序轨道继续运行。那么 awey 学长说的一位机16条单字节指令“照样跑飞”,没有其他的非正常程序轨道可以落脚,会飞到哪里?
另一点,假使由于干扰,造成PC计数器跳变,跳过一些指令未正常执行,造成某些测试语句的条件缺失,产生空循环等待;我的问题是:这种在正常轨道上的正常空循环等待,——即使是“永久的”,它能否被视为“死机”?
我认为只有“异常程序轨道”上的死循环才是“死机”。(上面说过,一位机不存在“异常程序轨道”)而正常轨道上的循环,如果由于程序员未考虑到的“意外”,造成长时间跳不出来,那属于程序设计的缺陷,是应该由程序员事先考虑到的事情。即:一个测试跳转语句中的被测试条件的所有各种可能状态,而不是只有一种正常状态。
正常程序轨道:程序存储器(2764)中的所有固化内容都是正常程序轨道上的指令。飞不出去? |