mirror of
https://github.com/TomHarte/CLK.git
synced 2025-03-08 00:35:47 +00:00
Decode CAS.
This commit is contained in:
parent
2b220659dd
commit
85df54ee7d
@ -569,6 +569,12 @@ template <typename Predecoder<model>::OpT op> uint32_t Predecoder<model>::invali
|
||||
Dn | PreDec,
|
||||
Dn | PreDec
|
||||
>::value;
|
||||
|
||||
case OpT(Operation::CASb): case OpT(Operation::CASw): case OpT(Operation::CASl):
|
||||
return ~TwoOperandMask<
|
||||
Ext,
|
||||
Ind | PostInc | PreDec | d16An | d8AnXn | XXXw | XXXl
|
||||
>::value;
|
||||
}
|
||||
|
||||
return InvalidOperands;
|
||||
@ -1155,6 +1161,17 @@ template <typename Predecoder<model>::OpT op, bool validate> Preinstruction Pred
|
||||
Condition::True, 1);
|
||||
}
|
||||
|
||||
//
|
||||
// MARK: CAS
|
||||
//
|
||||
// b0–b2 and b3–b5: an effective address.
|
||||
// There is also an immedate operand describing relevant registers.
|
||||
//
|
||||
case OpT(Operation::CASb): case OpT(Operation::CASw): case OpT(Operation::CASl):
|
||||
return validated<op, validate>(
|
||||
AddressingMode::ExtensionWord, 0,
|
||||
combined_mode(ea_mode, ea_register), ea_register);
|
||||
|
||||
//
|
||||
// MARK: DIVl
|
||||
//
|
||||
@ -1244,9 +1261,9 @@ Preinstruction Predecoder<model>::decode0(uint16_t instruction) {
|
||||
case 0x6c0: DecodeReq(model == Model::M68020, Op::CALLM);
|
||||
|
||||
// 4-67 (p171)
|
||||
// case 0xac0: DecodeReq(model >= Model::M68020, Op::CASb);
|
||||
// case 0xcc0: DecodeReq(model >= Model::M68020, Op::CASw);
|
||||
// case 0xec0: DecodeReq(model >= Model::M68020, Op::CASl);
|
||||
case 0xac0: DecodeReq(model >= Model::M68020, Op::CASb);
|
||||
case 0xcc0: DecodeReq(model >= Model::M68020, Op::CASw);
|
||||
case 0xec0: DecodeReq(model >= Model::M68020, Op::CASl);
|
||||
|
||||
// 4-72 (p176)
|
||||
// case 0x0c0: DecodeReq(model >= Model::M68020, Op::CHK2b);
|
||||
|
@ -153,6 +153,10 @@ const char *_to_string(Operation operation, bool is_quick) {
|
||||
case Operation::BSRl:
|
||||
case Operation::BSRw: return "BSR";
|
||||
|
||||
case Operation::CASb: return "CAS.b";
|
||||
case Operation::CASw: return "CAS.w";
|
||||
case Operation::CASl: return "CAS.l";
|
||||
|
||||
case Operation::CLRb: return "CLR.b";
|
||||
case Operation::CLRw: return "CLR.w";
|
||||
case Operation::CLRl: return "CLR.l";
|
||||
|
@ -2767,48 +2767,48 @@
|
||||
"0acd": "None",
|
||||
"0ace": "None",
|
||||
"0acf": "None",
|
||||
"0ad0": "None",
|
||||
"0ad1": "None",
|
||||
"0ad2": "None",
|
||||
"0ad3": "None",
|
||||
"0ad4": "None",
|
||||
"0ad5": "None",
|
||||
"0ad6": "None",
|
||||
"0ad7": "None",
|
||||
"0ad8": "None",
|
||||
"0ad9": "None",
|
||||
"0ada": "None",
|
||||
"0adb": "None",
|
||||
"0adc": "None",
|
||||
"0add": "None",
|
||||
"0ade": "None",
|
||||
"0adf": "None",
|
||||
"0ae0": "None",
|
||||
"0ae1": "None",
|
||||
"0ae2": "None",
|
||||
"0ae3": "None",
|
||||
"0ae4": "None",
|
||||
"0ae5": "None",
|
||||
"0ae6": "None",
|
||||
"0ae7": "None",
|
||||
"0ae8": "None",
|
||||
"0ae9": "None",
|
||||
"0aea": "None",
|
||||
"0aeb": "None",
|
||||
"0aec": "None",
|
||||
"0aed": "None",
|
||||
"0aee": "None",
|
||||
"0aef": "None",
|
||||
"0af0": "None",
|
||||
"0af1": "None",
|
||||
"0af2": "None",
|
||||
"0af3": "None",
|
||||
"0af4": "None",
|
||||
"0af5": "None",
|
||||
"0af6": "None",
|
||||
"0af7": "None",
|
||||
"0af8": "None",
|
||||
"0af9": "None",
|
||||
"0ad0": "CAS.b #, (A0)",
|
||||
"0ad1": "CAS.b #, (A1)",
|
||||
"0ad2": "CAS.b #, (A2)",
|
||||
"0ad3": "CAS.b #, (A3)",
|
||||
"0ad4": "CAS.b #, (A4)",
|
||||
"0ad5": "CAS.b #, (A5)",
|
||||
"0ad6": "CAS.b #, (A6)",
|
||||
"0ad7": "CAS.b #, (A7)",
|
||||
"0ad8": "CAS.b #, (A0)+",
|
||||
"0ad9": "CAS.b #, (A1)+",
|
||||
"0ada": "CAS.b #, (A2)+",
|
||||
"0adb": "CAS.b #, (A3)+",
|
||||
"0adc": "CAS.b #, (A4)+",
|
||||
"0add": "CAS.b #, (A5)+",
|
||||
"0ade": "CAS.b #, (A6)+",
|
||||
"0adf": "CAS.b #, (A7)+",
|
||||
"0ae0": "CAS.b #, -(A0)",
|
||||
"0ae1": "CAS.b #, -(A1)",
|
||||
"0ae2": "CAS.b #, -(A2)",
|
||||
"0ae3": "CAS.b #, -(A3)",
|
||||
"0ae4": "CAS.b #, -(A4)",
|
||||
"0ae5": "CAS.b #, -(A5)",
|
||||
"0ae6": "CAS.b #, -(A6)",
|
||||
"0ae7": "CAS.b #, -(A7)",
|
||||
"0ae8": "CAS.b #, (d16, A0)",
|
||||
"0ae9": "CAS.b #, (d16, A1)",
|
||||
"0aea": "CAS.b #, (d16, A2)",
|
||||
"0aeb": "CAS.b #, (d16, A3)",
|
||||
"0aec": "CAS.b #, (d16, A4)",
|
||||
"0aed": "CAS.b #, (d16, A5)",
|
||||
"0aee": "CAS.b #, (d16, A6)",
|
||||
"0aef": "CAS.b #, (d16, A7)",
|
||||
"0af0": "CAS.b #, (d8, A0, Xn)",
|
||||
"0af1": "CAS.b #, (d8, A1, Xn)",
|
||||
"0af2": "CAS.b #, (d8, A2, Xn)",
|
||||
"0af3": "CAS.b #, (d8, A3, Xn)",
|
||||
"0af4": "CAS.b #, (d8, A4, Xn)",
|
||||
"0af5": "CAS.b #, (d8, A5, Xn)",
|
||||
"0af6": "CAS.b #, (d8, A6, Xn)",
|
||||
"0af7": "CAS.b #, (d8, A7, Xn)",
|
||||
"0af8": "CAS.b #, (xxx).w",
|
||||
"0af9": "CAS.b #, (xxx).l",
|
||||
"0afa": "None",
|
||||
"0afb": "None",
|
||||
"0afc": "None",
|
||||
@ -3279,48 +3279,48 @@
|
||||
"0ccd": "None",
|
||||
"0cce": "None",
|
||||
"0ccf": "None",
|
||||
"0cd0": "None",
|
||||
"0cd1": "None",
|
||||
"0cd2": "None",
|
||||
"0cd3": "None",
|
||||
"0cd4": "None",
|
||||
"0cd5": "None",
|
||||
"0cd6": "None",
|
||||
"0cd7": "None",
|
||||
"0cd8": "None",
|
||||
"0cd9": "None",
|
||||
"0cda": "None",
|
||||
"0cdb": "None",
|
||||
"0cdc": "None",
|
||||
"0cdd": "None",
|
||||
"0cde": "None",
|
||||
"0cdf": "None",
|
||||
"0ce0": "None",
|
||||
"0ce1": "None",
|
||||
"0ce2": "None",
|
||||
"0ce3": "None",
|
||||
"0ce4": "None",
|
||||
"0ce5": "None",
|
||||
"0ce6": "None",
|
||||
"0ce7": "None",
|
||||
"0ce8": "None",
|
||||
"0ce9": "None",
|
||||
"0cea": "None",
|
||||
"0ceb": "None",
|
||||
"0cec": "None",
|
||||
"0ced": "None",
|
||||
"0cee": "None",
|
||||
"0cef": "None",
|
||||
"0cf0": "None",
|
||||
"0cf1": "None",
|
||||
"0cf2": "None",
|
||||
"0cf3": "None",
|
||||
"0cf4": "None",
|
||||
"0cf5": "None",
|
||||
"0cf6": "None",
|
||||
"0cf7": "None",
|
||||
"0cf8": "None",
|
||||
"0cf9": "None",
|
||||
"0cd0": "CAS.w #, (A0)",
|
||||
"0cd1": "CAS.w #, (A1)",
|
||||
"0cd2": "CAS.w #, (A2)",
|
||||
"0cd3": "CAS.w #, (A3)",
|
||||
"0cd4": "CAS.w #, (A4)",
|
||||
"0cd5": "CAS.w #, (A5)",
|
||||
"0cd6": "CAS.w #, (A6)",
|
||||
"0cd7": "CAS.w #, (A7)",
|
||||
"0cd8": "CAS.w #, (A0)+",
|
||||
"0cd9": "CAS.w #, (A1)+",
|
||||
"0cda": "CAS.w #, (A2)+",
|
||||
"0cdb": "CAS.w #, (A3)+",
|
||||
"0cdc": "CAS.w #, (A4)+",
|
||||
"0cdd": "CAS.w #, (A5)+",
|
||||
"0cde": "CAS.w #, (A6)+",
|
||||
"0cdf": "CAS.w #, (A7)+",
|
||||
"0ce0": "CAS.w #, -(A0)",
|
||||
"0ce1": "CAS.w #, -(A1)",
|
||||
"0ce2": "CAS.w #, -(A2)",
|
||||
"0ce3": "CAS.w #, -(A3)",
|
||||
"0ce4": "CAS.w #, -(A4)",
|
||||
"0ce5": "CAS.w #, -(A5)",
|
||||
"0ce6": "CAS.w #, -(A6)",
|
||||
"0ce7": "CAS.w #, -(A7)",
|
||||
"0ce8": "CAS.w #, (d16, A0)",
|
||||
"0ce9": "CAS.w #, (d16, A1)",
|
||||
"0cea": "CAS.w #, (d16, A2)",
|
||||
"0ceb": "CAS.w #, (d16, A3)",
|
||||
"0cec": "CAS.w #, (d16, A4)",
|
||||
"0ced": "CAS.w #, (d16, A5)",
|
||||
"0cee": "CAS.w #, (d16, A6)",
|
||||
"0cef": "CAS.w #, (d16, A7)",
|
||||
"0cf0": "CAS.w #, (d8, A0, Xn)",
|
||||
"0cf1": "CAS.w #, (d8, A1, Xn)",
|
||||
"0cf2": "CAS.w #, (d8, A2, Xn)",
|
||||
"0cf3": "CAS.w #, (d8, A3, Xn)",
|
||||
"0cf4": "CAS.w #, (d8, A4, Xn)",
|
||||
"0cf5": "CAS.w #, (d8, A5, Xn)",
|
||||
"0cf6": "CAS.w #, (d8, A6, Xn)",
|
||||
"0cf7": "CAS.w #, (d8, A7, Xn)",
|
||||
"0cf8": "CAS.w #, (xxx).w",
|
||||
"0cf9": "CAS.w #, (xxx).l",
|
||||
"0cfa": "None",
|
||||
"0cfb": "None",
|
||||
"0cfc": "None",
|
||||
@ -3791,48 +3791,48 @@
|
||||
"0ecd": "None",
|
||||
"0ece": "None",
|
||||
"0ecf": "None",
|
||||
"0ed0": "None",
|
||||
"0ed1": "None",
|
||||
"0ed2": "None",
|
||||
"0ed3": "None",
|
||||
"0ed4": "None",
|
||||
"0ed5": "None",
|
||||
"0ed6": "None",
|
||||
"0ed7": "None",
|
||||
"0ed8": "None",
|
||||
"0ed9": "None",
|
||||
"0eda": "None",
|
||||
"0edb": "None",
|
||||
"0edc": "None",
|
||||
"0edd": "None",
|
||||
"0ede": "None",
|
||||
"0edf": "None",
|
||||
"0ee0": "None",
|
||||
"0ee1": "None",
|
||||
"0ee2": "None",
|
||||
"0ee3": "None",
|
||||
"0ee4": "None",
|
||||
"0ee5": "None",
|
||||
"0ee6": "None",
|
||||
"0ee7": "None",
|
||||
"0ee8": "None",
|
||||
"0ee9": "None",
|
||||
"0eea": "None",
|
||||
"0eeb": "None",
|
||||
"0eec": "None",
|
||||
"0eed": "None",
|
||||
"0eee": "None",
|
||||
"0eef": "None",
|
||||
"0ef0": "None",
|
||||
"0ef1": "None",
|
||||
"0ef2": "None",
|
||||
"0ef3": "None",
|
||||
"0ef4": "None",
|
||||
"0ef5": "None",
|
||||
"0ef6": "None",
|
||||
"0ef7": "None",
|
||||
"0ef8": "None",
|
||||
"0ef9": "None",
|
||||
"0ed0": "CAS.l #, (A0)",
|
||||
"0ed1": "CAS.l #, (A1)",
|
||||
"0ed2": "CAS.l #, (A2)",
|
||||
"0ed3": "CAS.l #, (A3)",
|
||||
"0ed4": "CAS.l #, (A4)",
|
||||
"0ed5": "CAS.l #, (A5)",
|
||||
"0ed6": "CAS.l #, (A6)",
|
||||
"0ed7": "CAS.l #, (A7)",
|
||||
"0ed8": "CAS.l #, (A0)+",
|
||||
"0ed9": "CAS.l #, (A1)+",
|
||||
"0eda": "CAS.l #, (A2)+",
|
||||
"0edb": "CAS.l #, (A3)+",
|
||||
"0edc": "CAS.l #, (A4)+",
|
||||
"0edd": "CAS.l #, (A5)+",
|
||||
"0ede": "CAS.l #, (A6)+",
|
||||
"0edf": "CAS.l #, (A7)+",
|
||||
"0ee0": "CAS.l #, -(A0)",
|
||||
"0ee1": "CAS.l #, -(A1)",
|
||||
"0ee2": "CAS.l #, -(A2)",
|
||||
"0ee3": "CAS.l #, -(A3)",
|
||||
"0ee4": "CAS.l #, -(A4)",
|
||||
"0ee5": "CAS.l #, -(A5)",
|
||||
"0ee6": "CAS.l #, -(A6)",
|
||||
"0ee7": "CAS.l #, -(A7)",
|
||||
"0ee8": "CAS.l #, (d16, A0)",
|
||||
"0ee9": "CAS.l #, (d16, A1)",
|
||||
"0eea": "CAS.l #, (d16, A2)",
|
||||
"0eeb": "CAS.l #, (d16, A3)",
|
||||
"0eec": "CAS.l #, (d16, A4)",
|
||||
"0eed": "CAS.l #, (d16, A5)",
|
||||
"0eee": "CAS.l #, (d16, A6)",
|
||||
"0eef": "CAS.l #, (d16, A7)",
|
||||
"0ef0": "CAS.l #, (d8, A0, Xn)",
|
||||
"0ef1": "CAS.l #, (d8, A1, Xn)",
|
||||
"0ef2": "CAS.l #, (d8, A2, Xn)",
|
||||
"0ef3": "CAS.l #, (d8, A3, Xn)",
|
||||
"0ef4": "CAS.l #, (d8, A4, Xn)",
|
||||
"0ef5": "CAS.l #, (d8, A5, Xn)",
|
||||
"0ef6": "CAS.l #, (d8, A6, Xn)",
|
||||
"0ef7": "CAS.l #, (d8, A7, Xn)",
|
||||
"0ef8": "CAS.l #, (xxx).w",
|
||||
"0ef9": "CAS.l #, (xxx).l",
|
||||
"0efa": "None",
|
||||
"0efb": "None",
|
||||
"0efc": "None",
|
||||
|
@ -83,7 +83,7 @@ template <Model model> void test(NSString *filename, Class cls) {
|
||||
*/
|
||||
|
||||
- (void)test68020 {
|
||||
generate<Model::M68020>();
|
||||
// generate<Model::M68020>();
|
||||
test<Model::M68020>(@"68020ops", [self class]);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user