标志寄存器中保留/未定义位的用途是什么?

时间:2017-06-30 07:34:21

标签: cpu-architecture x86-16 z80 8085 intel-8080

在Z80,8080,8085和8086处理器的标志寄存器中,位1,3,5的目的是什么,记录为"保留"或" undefined"?

1 个答案:

答案 0 :(得分:8)

这些位未使用;也就是说,没有指令明确地将它们设置为任何值。设计人员认为5/6标志就足够了,他们只是将标志寄存器的其余位保留为未使用状态。

他们被记录为"未定义"因为在执行任何指令之后不可能事先知道它们具有哪个值 - 处理器设计更简单,而不是明确地将它们设置为0或1。

现在,严格地说,至少对于Z80来说,这些标志实际上得到了一个可预测的值 - 毕竟,处理器将始终产生相同的输出并在给定的情况下改变为内部状态输入和先前内部状态的组合。例如,this document about undocumented Z80 instructions说明了有关CPI的内容:

  

标志3和5设置如下:取A,减去最后一个(HL),然后   如果设置了H标志(/之后/ CP),则将其减1。第1位   该值为标志5,第3位为标志3。

然而,重点是这种行为无意 - 只是副作用 - 并且不保证在未来的处理器迭代中出现。这就是为什么他们被记录为只是"未定义",如同,"它们对你没用,所以只是忽略它们"。

注意,在Z80上,F寄存器的所有位都可以设置为任何状态,在i8080位3和5(对应于未记录的Z80标志)总是读为0和位1(对应于Z80的N标志)总是读为1。