OpCodeCcmp.cs 855 B

1234567891011121314151617181920212223242526272829303132
  1. using ARMeilleure.State;
  2. namespace ARMeilleure.Decoders
  3. {
  4. class OpCodeCcmp : OpCodeAlu, IOpCodeCond
  5. {
  6. public int Nzcv { get; }
  7. protected int RmImm;
  8. public Condition Cond { get; }
  9. public new static OpCode Create(InstDescriptor inst, ulong address, int opCode) => new OpCodeCcmp(inst, address, opCode);
  10. public OpCodeCcmp(InstDescriptor inst, ulong address, int opCode) : base(inst, address, opCode)
  11. {
  12. int o3 = (opCode >> 4) & 1;
  13. if (o3 != 0)
  14. {
  15. Instruction = InstDescriptor.Undefined;
  16. return;
  17. }
  18. Nzcv = (opCode >> 0) & 0xf;
  19. Cond = (Condition)((opCode >> 12) & 0xf);
  20. RmImm = (opCode >> 16) & 0x1f;
  21. Rd = RegisterAlias.Zr;
  22. }
  23. }
  24. }