Archived
1
0

add add opcode

This commit is contained in:
Erick
2022-02-01 01:12:39 +01:00
parent 388dadd8fa
commit d2a5e24854
+14 -1
View File
@@ -142,10 +142,23 @@ int main(int argc, const char* argv[]) {
{BR}; {BR};
break; break;
case OP_ADD: case OP_ADD:
uint16_t dr = (instr >> 9) & 0x7; // destination register
uint16_t sr1 = (instr >> 6) & 0x7; // source register 1
uint16_t sr2; // source register 2
uint16_t imm_flag = (instr >> 5) & 0x1; // immediate mode flag (bit[5])
uint16_t imm5; // immediate mode register
if(imm_flag == 0) {
uint16_t sr2 = (instr & 0x7);
reg[dr] = reg[sr1] + sr2;
}
else {
imm5 = sign_extend(instr & 0x1F, 5);
reg[dr] = reg[sr1] + imm5;
}
update_flags(dr);
// {ADD};
break; break;
case OP_LD: case OP_LD:
{LD}; {LD};