OpCodeSimdFmov.cs 823 B

12345678910111213141516171819202122232425262728293031
  1. namespace ARMeilleure.Decoders
  2. {
  3. class OpCodeSimdFmov : OpCode, IOpCodeSimd
  4. {
  5. public int Rd { get; private set; }
  6. public long Immediate { get; private set; }
  7. public int Size { get; private set; }
  8. public OpCodeSimdFmov(InstDescriptor inst, ulong address, int opCode) : base(inst, address, opCode)
  9. {
  10. int imm5 = (opCode >> 5) & 0x1f;
  11. int type = (opCode >> 22) & 0x3;
  12. if (imm5 != 0b00000 || type > 1)
  13. {
  14. Instruction = InstDescriptor.Undefined;
  15. return;
  16. }
  17. Size = type;
  18. long imm;
  19. Rd = (opCode >> 0) & 0x1f;
  20. imm = (opCode >> 13) & 0xff;
  21. Immediate = DecoderHelper.DecodeImm8Float(imm, type);
  22. }
  23. }
  24. }