1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-09-29 16:55:59 +00:00

Add failing tests for EOR, NOT, OR; disambiguate EOR vs CMP.

This commit is contained in:
Thomas Harte 2022-04-21 20:36:04 -04:00
parent 25eeff8fc5
commit cf66d9d38d
2 changed files with 21 additions and 20 deletions

View File

@ -177,11 +177,15 @@ template <uint8_t op, bool validate> Preinstruction Predecoder<model>::validated
case SUBQb: case SUBQw: case SUBQl: case SUBQb: case SUBQw: case SUBQl:
case OpT(Operation::MOVEb): case OpT(Operation::MOVEw): case OpT(Operation::MOVEl): case OpT(Operation::MOVEb): case OpT(Operation::MOVEw): case OpT(Operation::MOVEl):
case OpT(Operation::MOVEAw): case OpT(Operation::MOVEAl): case OpT(Operation::MOVEAw): case OpT(Operation::MOVEAl):
case OpT(Operation::ANDb): case OpT(Operation::ANDw): case OpT(Operation::ANDl): { case OpT(Operation::ANDb): case OpT(Operation::ANDw): case OpT(Operation::ANDl):
case OpT(Operation::EORb): case OpT(Operation::EORw): case OpT(Operation::EORl):
case OpT(Operation::ORb): case OpT(Operation::ORw): case OpT(Operation::ORl):
case OpT(Operation::NOTb): case OpT(Operation::NOTw): case OpT(Operation::NOTl): {
// TODO: I'm going to need get-size-by-operation elsewhere; use that here when implemented. // TODO: I'm going to need get-size-by-operation elsewhere; use that here when implemented.
constexpr bool is_byte = constexpr bool is_byte =
op == OpT(Operation::ADDb) || op == OpT(Operation::SUBb) || op == OpT(Operation::MOVEb) || op == OpT(Operation::ADDb) || op == OpT(Operation::SUBb) || op == OpT(Operation::MOVEb) ||
op == ADDQb || op == SUBQb || op == OpT(Operation::ANDb); op == ADDQb || op == SUBQb || op == OpT(Operation::ANDb) || op == OpT(Operation::EORb) ||
op == OpT(Operation::ORb) || op == OpT(Operation::NOTb);
switch(original.mode<0>()) { switch(original.mode<0>()) {
default: break; default: break;
@ -1163,14 +1167,11 @@ Preinstruction Predecoder<model>::decodeB(uint16_t instruction) {
case 0x0c0: Decode(Op::CMPAw); case 0x0c0: Decode(Op::CMPAw);
case 0x1c0: Decode(Op::CMPAl); case 0x1c0: Decode(Op::CMPAl);
default: break;
}
switch(instruction & 0x0c0) {
// 4-100 (p204) // 4-100 (p204)
case 0x000: Decode(Op::EORb); case 0x100: Decode(Op::EORb);
case 0x040: Decode(Op::EORw); case 0x140: Decode(Op::EORw);
case 0x080: Decode(Op::EORl); case 0x180: Decode(Op::EORl);
default: break; default: break;
} }

View File

@ -229,17 +229,17 @@ template <int index> NSString *operand(Preinstruction instruction, uint16_t opco
case Operation::ANDw: instruction = @"AND.w"; break; case Operation::ANDw: instruction = @"AND.w"; break;
case Operation::ANDl: instruction = @"AND.l"; break; case Operation::ANDl: instruction = @"AND.l"; break;
// case Operation::EORb: instruction = @"EOR.b"; break; case Operation::EORb: instruction = @"EOR.b"; break;
// case Operation::EORw: instruction = @"EOR.w"; break; case Operation::EORw: instruction = @"EOR.w"; break;
// case Operation::EORl: instruction = @"EOR.l"; break; case Operation::EORl: instruction = @"EOR.l"; break;
//
// case Operation::NOTb: instruction = @"NOT.b"; break; case Operation::NOTb: instruction = @"NOT.b"; break;
// case Operation::NOTw: instruction = @"NOT.w"; break; case Operation::NOTw: instruction = @"NOT.w"; break;
// case Operation::NOTl: instruction = @"NOT.l"; break; case Operation::NOTl: instruction = @"NOT.l"; break;
//
// case Operation::ORb: instruction = @"OR.b"; break; case Operation::ORb: instruction = @"OR.b"; break;
// case Operation::ORw: instruction = @"OR.w"; break; case Operation::ORw: instruction = @"OR.w"; break;
// case Operation::ORl: instruction = @"OR.l"; break; case Operation::ORl: instruction = @"OR.l"; break;
/* /*
TODO: TODO: