在为我的6502/NES仿真器创建指令函数时,我陷入了理解6502中的带符号字节和2的补码的概念。显然,诸如BMI的分支指令在内存中使用带符号字节来执行向前/向后分支,有些指令允许使用负数进行算术运算。负标志也检测累加器的第7位。 (二的补码)6502存储器中存储的字节是有符号还是无符号?
这是否意味着内存中的所有字节都有符号,我可以将内存初始化为int8_t CPUMEMORY[0x10000];
而不是uint8_t CPUMEMORY[0x10000]
?
虽然困扰我的事情是,当运算结果超过无符号8位限制(即255)时,进位标志被设置。但是,如果所有字节都被签名,这应该不是127? (溢出标志是这样做的,但是进入标志有什么意义?)
ADC和SBC是否将字节解释为无符号和有符号的指令示例?或者还有其他的吗? –
事实上,你可以将加法或减法的操作数/结果解释为有符号或无符号。 –
只是为了完整:**一些**指令甚至可以将字节解释为6502上的BCD。 –