Add MUL ocpu instruction
This commit is contained in:
parent
4c4e0b9460
commit
3e85806ac7
|
@ -207,7 +207,7 @@ void ocpu_execute() {
|
|||
write_register(reg, 0, word_value);
|
||||
}
|
||||
break;
|
||||
case INS_ADD_IM:
|
||||
case INS_ADD_IM:
|
||||
reg = ocpu_fetch_byte();
|
||||
if (!is_word_reg(reg)) {
|
||||
value = match_register(reg) + ocpu_fetch_byte();
|
||||
|
@ -217,7 +217,7 @@ void ocpu_execute() {
|
|||
write_register(reg, 0, word_value);
|
||||
}
|
||||
break;
|
||||
case INS_ADD_REG:
|
||||
case INS_ADD_REG:
|
||||
reg = ocpu_fetch_byte();
|
||||
if (!is_word_reg(reg)) {
|
||||
value = match_register(reg) + match_register(ocpu_fetch_byte());
|
||||
|
@ -227,7 +227,7 @@ void ocpu_execute() {
|
|||
write_register(reg, 0, word_value);
|
||||
}
|
||||
break;
|
||||
case INS_ADC_IM:
|
||||
case INS_ADC_IM:
|
||||
reg = ocpu_fetch_byte();
|
||||
if (!is_word_reg(reg)) {
|
||||
value = match_register(reg) + ocpu_fetch_byte() + ocpu.CF;
|
||||
|
@ -237,7 +237,7 @@ void ocpu_execute() {
|
|||
write_register(reg, 0, word_value);
|
||||
}
|
||||
break;
|
||||
case INS_ADC_REG:
|
||||
case INS_ADC_REG:
|
||||
reg = ocpu_fetch_byte();
|
||||
if (!is_word_reg(reg)) {
|
||||
value = match_register(reg) + match_register(ocpu_fetch_byte()) + ocpu.CF;
|
||||
|
@ -247,7 +247,7 @@ void ocpu_execute() {
|
|||
write_register(reg, 0, word_value);
|
||||
}
|
||||
break;
|
||||
case INS_SUB_IM:
|
||||
case INS_SUB_IM:
|
||||
reg = ocpu_fetch_byte();
|
||||
if (!is_word_reg(reg)) {
|
||||
value = match_register(reg) - ocpu_fetch_byte();
|
||||
|
@ -257,7 +257,7 @@ void ocpu_execute() {
|
|||
write_register(reg, 0, word_value);
|
||||
}
|
||||
break;
|
||||
case INS_SUB_REG:
|
||||
case INS_SUB_REG:
|
||||
reg = ocpu_fetch_byte();
|
||||
if (!is_word_reg(reg)) {
|
||||
value = match_register(reg) - match_register(ocpu_fetch_byte());
|
||||
|
@ -267,7 +267,27 @@ void ocpu_execute() {
|
|||
write_register(reg, 0, word_value);
|
||||
}
|
||||
break;
|
||||
case INS_INC:
|
||||
case INS_MUL_IM:
|
||||
reg = ocpu_fetch_byte();
|
||||
if (!is_word_reg(reg)) {
|
||||
value = match_register(reg) * ocpu_fetch_byte();
|
||||
write_register(reg, value, 0);
|
||||
} else {
|
||||
word_value = match_register(reg) * ocpu_fetch_word();
|
||||
write_register(reg, 0, word_value);
|
||||
}
|
||||
break;
|
||||
case INS_MUL_REG:
|
||||
reg = ocpu_fetch_byte();
|
||||
if (!is_word_reg(reg)) {
|
||||
value = match_register(reg) * match_register(ocpu_fetch_byte());
|
||||
write_register(reg, value, 0);
|
||||
} else {
|
||||
word_value = match_register(reg) * match_register(ocpu_fetch_byte());
|
||||
write_register(reg, 0, word_value);
|
||||
}
|
||||
break;
|
||||
case INS_INC:
|
||||
reg = ocpu_fetch_byte();
|
||||
if (!is_word_reg(reg)) {
|
||||
value = match_register(reg) + 1;
|
||||
|
|
Loading…
Reference in New Issue