| 1234567891011121314151617181920212223242526272829303132333435 |
- using ChocolArm64.Instructions;
- namespace ChocolArm64.Decoders
- {
- class OpCodeMov64 : OpCode64
- {
- public int Rd { get; private set; }
- public long Imm { get; private set; }
- public int Pos { get; private set; }
- public OpCodeMov64(Inst inst, long position, int opCode) : base(inst, position, opCode)
- {
- int p1 = (opCode >> 22) & 1;
- int sf = (opCode >> 31) & 1;
- if (sf == 0 && p1 != 0)
- {
- Emitter = InstEmit.Und;
- return;
- }
- Rd = (opCode >> 0) & 0x1f;
- Imm = (opCode >> 5) & 0xffff;
- Pos = (opCode >> 21) & 0x3;
- Pos <<= 4;
- Imm <<= Pos;
- RegisterSize = (opCode >> 31) != 0
- ? State.RegisterSize.Int64
- : State.RegisterSize.Int32;
- }
- }
- }
|