mirror of https://github.com/mgba-emu/mgba.git
Implement ADC, SBC
This commit is contained in:
parent
c61812325c
commit
301c07dda3
|
@ -54,13 +54,13 @@ union PSR {
|
|||
struct {
|
||||
enum PrivilegeMode priv : 5;
|
||||
enum ExecutionMode t : 1;
|
||||
int f : 1;
|
||||
int i : 1;
|
||||
int : 20;
|
||||
int v : 1;
|
||||
int c : 1;
|
||||
int z : 1;
|
||||
int n : 1;
|
||||
unsigned f : 1;
|
||||
unsigned i : 1;
|
||||
unsigned : 20;
|
||||
unsigned v : 1;
|
||||
unsigned c : 1;
|
||||
unsigned z : 1;
|
||||
unsigned n : 1;
|
||||
};
|
||||
|
||||
int32_t packed;
|
||||
|
|
|
@ -247,8 +247,17 @@ DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(ASR2,
|
|||
}
|
||||
THUMB_NEUTRAL_S( , , cpu->gprs[rd]))
|
||||
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(ADC, ARM_STUB)
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(SBC, ARM_STUB)
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(ADC,
|
||||
int n = cpu->gprs[rn] + cpu->cpsr.c;
|
||||
int d = cpu->gprs[rd];
|
||||
cpu->gprs[rd] = d + n;
|
||||
THUMB_ADDITION_S(d, n, cpu->gprs[rd]);)
|
||||
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(SBC,
|
||||
int n = cpu->gprs[rn] + !cpu->cpsr.c;
|
||||
int d = cpu->gprs[rd];
|
||||
cpu->gprs[rd] = d - n;
|
||||
THUMB_SUBTRACTION_S(d, n, cpu->gprs[rd]);)
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(ROR,
|
||||
int rs = cpu->gprs[rn] & 0xFF;
|
||||
if (rs) {
|
||||
|
|
Loading…
Reference in New Issue