AOpCodeSimdFmov.cs 820 B

123456789101112131415161718192021222324252627282930313233
  1. using ChocolArm64.Instruction;
  2. namespace ChocolArm64.Decoder
  3. {
  4. class AOpCodeSimdFmov : AOpCode, IAOpCodeSimd
  5. {
  6. public int Rd { get; private set; }
  7. public long Imm { get; private set; }
  8. public int Size { get; private set; }
  9. public AOpCodeSimdFmov(AInst Inst, long Position, int OpCode) : base(Inst, Position, OpCode)
  10. {
  11. int Imm5 = (OpCode >> 5) & 0x1f;
  12. int Type = (OpCode >> 22) & 0x3;
  13. if (Imm5 != 0b00000 || Type > 1)
  14. {
  15. Emitter = AInstEmit.Und;
  16. return;
  17. }
  18. Size = Type;
  19. long Imm;
  20. Rd = (OpCode >> 0) & 0x1f;
  21. Imm = (OpCode >> 13) & 0xff;
  22. this.Imm = ADecoderHelper.DecodeImm8Float(Imm, Type);
  23. }
  24. }
  25. }