【发布时间】:2017-07-30 07:33:09
【问题描述】:
在为我的 6502/NES 仿真器创建指令函数时,我一直在理解 6502 中的有符号字节和二进制补码的概念。显然,诸如 BMI 之类的分支指令使用内存中的有符号字节进行前向/后向分支, 并且一些指令允许对负数进行算术运算。负标志也检测累加器的第 7 位。 (二进制补码)
这是否意味着内存中的所有字节都已签名,我可以将内存初始化为 int8_t CPUMEMORY[0x10000]; 而不是 uint8_t CPUMEMORY[0x10000]?
但令我困扰的是,当运算结果超过无符号 8 位限制(即 255)时会设置进位标志。但是如果所有字节都已签名,这不应该是 127 吗? (溢出标志是这样做的,但是有一个进位标志有什么意义呢?)
【问题讨论】:
-
负标志根据累加器的最高位设置,第 8 位是第 7 位。 (第一位是#0 位)。
标签: assembly flags twos-complement 6502