OpCodeMemPair.cs 800 B

12345678910111213141516171819202122232425
  1. namespace ARMeilleure.Decoders
  2. {
  3. class OpCodeMemPair : OpCodeMemImm
  4. {
  5. public int Rt2 { get; }
  6. public new static OpCode Create(InstDescriptor inst, ulong address, int opCode) => new OpCodeMemPair(inst, address, opCode);
  7. public OpCodeMemPair(InstDescriptor inst, ulong address, int opCode) : base(inst, address, opCode)
  8. {
  9. Rt2 = (opCode >> 10) & 0x1f;
  10. WBack = ((opCode >> 23) & 0x1) != 0;
  11. PostIdx = ((opCode >> 23) & 0x3) == 1;
  12. Extend64 = ((opCode >> 30) & 0x3) == 1;
  13. Size = ((opCode >> 31) & 0x1) | 2;
  14. DecodeImm(opCode);
  15. }
  16. protected void DecodeImm(int opCode)
  17. {
  18. Immediate = ((long)(opCode >> 15) << 57) >> (57 - Size);
  19. }
  20. }
  21. }