在爲我的6502/NES仿真器創建指令函數時,我陷入了理解6502中的帶符號字節和2的補碼的概念。顯然,諸如BMI的分支指令在內存中使用帶符號字節來執行向前/向後分支,有些指令允許使用負數進行算術運算。負標誌也檢測累加器的第7位。 (二的補碼)6502存儲器中存儲的字節是有符號還是無符號?
這是否意味着內存中的所有字節都有符號,我可以將內存初始化爲int8_t CPUMEMORY[0x10000];
而不是uint8_t CPUMEMORY[0x10000]
?
雖然困擾我的事情是,當運算結果超過無符號8位限制(即255)時,進位標誌被設置。但是,如果所有字節都被簽名,這應該不是127? (溢出標誌是這樣做的,但是進入標誌有什麼意義?)
ADC和SBC是否將字節解釋爲無符號和有符號的指令示例?或者還有其他的嗎? –
事實上,你可以將加法或減法的操作數/結果解釋爲有符號或無符號。 –
只是爲了完整:**一些**指令甚至可以將字節解釋爲6502上的BCD。 –