mirror of
https://github.com/TomHarte/CLK.git
synced 2024-07-06 01:28:57 +00:00
Completes addressing modes for ADDI/etc/etc.
This commit is contained in:
parent
d8d974e2d7
commit
be722143e1
@ -665,6 +665,15 @@ struct ProcessorStorageConstructor {
|
|||||||
op(Action::PerformOperation, seq("nw", { ea(1) }, !is_byte_access));
|
op(Action::PerformOperation, seq("nw", { ea(1) }, !is_byte_access));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case l(d8AnXn): // [EORI/ORI/ANDI/SUBI/ADDI].l #, (d8, An, Xn)
|
||||||
|
case l(d16An): // [EORI/ORI/ANDI/SUBI/ADDI].l #, (d16, An)
|
||||||
|
op(Action::None, seq("np"));
|
||||||
|
op(int(Action::AssembleLongWordDataFromPrefetch) | MicroOp::SourceMask, seq("np"));
|
||||||
|
op( calc_action_for_mode(mode) | MicroOp::DestinationMask,
|
||||||
|
seq(pseq("np nRd+ nrd np", mode), { ea(1), ea(1) }));
|
||||||
|
op(Action::PerformOperation, seq("nw- nW", { ea(1), ea(1) }));
|
||||||
|
break;
|
||||||
|
|
||||||
case bw(XXXw): // [EORI/ORI/ANDI/SUBI/ADDI].bw #, (xxx).w
|
case bw(XXXw): // [EORI/ORI/ANDI/SUBI/ADDI].bw #, (xxx).w
|
||||||
op(int(Action::AssembleWordDataFromPrefetch) | MicroOp::SourceMask, seq("np"));
|
op(int(Action::AssembleWordDataFromPrefetch) | MicroOp::SourceMask, seq("np"));
|
||||||
op( int(Action::AssembleWordAddressFromPrefetch) | MicroOp::DestinationMask,
|
op( int(Action::AssembleWordAddressFromPrefetch) | MicroOp::DestinationMask,
|
||||||
@ -672,12 +681,28 @@ struct ProcessorStorageConstructor {
|
|||||||
op(Action::PerformOperation, seq("nw", { ea(1) }, !is_byte_access));
|
op(Action::PerformOperation, seq("nw", { ea(1) }, !is_byte_access));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case l(XXXw): // [EORI/ORI/ANDI/SUBI/ADDI].l #, (xxx).w
|
||||||
|
op(Action::None, seq("np"));
|
||||||
|
op(int(Action::AssembleLongWordDataFromPrefetch) | MicroOp::SourceMask, seq("np"));
|
||||||
|
op( int(Action::AssembleWordAddressFromPrefetch) | MicroOp::DestinationMask,
|
||||||
|
seq("np nRd+ nrd np", { ea(1), ea(1) }));
|
||||||
|
op(Action::PerformOperation, seq("nw- nW", { ea(1), ea(1) }));
|
||||||
|
break;
|
||||||
|
|
||||||
case bw(XXXl): // [EORI/ORI/ANDI/SUBI/ADDI].bw #, (xxx).l
|
case bw(XXXl): // [EORI/ORI/ANDI/SUBI/ADDI].bw #, (xxx).l
|
||||||
op(int(Action::AssembleWordDataFromPrefetch) | MicroOp::SourceMask, seq("np np"));
|
op(int(Action::AssembleWordDataFromPrefetch) | MicroOp::SourceMask, seq("np np"));
|
||||||
op( int(Action::AssembleLongWordAddressFromPrefetch) | MicroOp::DestinationMask,
|
op( int(Action::AssembleLongWordAddressFromPrefetch) | MicroOp::DestinationMask,
|
||||||
seq("np nrd np", { ea(1) }, !is_byte_access));
|
seq("np nrd np", { ea(1) }, !is_byte_access));
|
||||||
op(Action::PerformOperation, seq("nw", { ea(1) }, !is_byte_access));
|
op(Action::PerformOperation, seq("nw", { ea(1) }, !is_byte_access));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case l(XXXl): // [EORI/ORI/ANDI/SUBI/ADDI].l #, (xxx).l
|
||||||
|
op(Action::None, seq("np"));
|
||||||
|
op(int(Action::AssembleLongWordDataFromPrefetch) | MicroOp::SourceMask, seq("np np"));
|
||||||
|
op( int(Action::AssembleLongWordAddressFromPrefetch) | MicroOp::DestinationMask,
|
||||||
|
seq("np nRd+ nrd np", { ea(1), ea(1) }));
|
||||||
|
op(Action::PerformOperation, seq("nw- nW", { ea(1), ea(1) }));
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user