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 {
|
struct {
|
||||||
enum PrivilegeMode priv : 5;
|
enum PrivilegeMode priv : 5;
|
||||||
enum ExecutionMode t : 1;
|
enum ExecutionMode t : 1;
|
||||||
int f : 1;
|
unsigned f : 1;
|
||||||
int i : 1;
|
unsigned i : 1;
|
||||||
int : 20;
|
unsigned : 20;
|
||||||
int v : 1;
|
unsigned v : 1;
|
||||||
int c : 1;
|
unsigned c : 1;
|
||||||
int z : 1;
|
unsigned z : 1;
|
||||||
int n : 1;
|
unsigned n : 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
int32_t packed;
|
int32_t packed;
|
||||||
|
|
|
@ -247,8 +247,17 @@ DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(ASR2,
|
||||||
}
|
}
|
||||||
THUMB_NEUTRAL_S( , , cpu->gprs[rd]))
|
THUMB_NEUTRAL_S( , , cpu->gprs[rd]))
|
||||||
|
|
||||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(ADC, ARM_STUB)
|
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(ADC,
|
||||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(SBC, ARM_STUB)
|
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,
|
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(ROR,
|
||||||
int rs = cpu->gprs[rn] & 0xFF;
|
int rs = cpu->gprs[rn] & 0xFF;
|
||||||
if (rs) {
|
if (rs) {
|
||||||
|
|
Loading…
Reference in New Issue