/// <summary> /// Create ARM Operands. /// </summary> /// <param name="disassembler"> /// A disassembler. /// </param> /// <param name="nativeInstructionDetail"> /// A native ARM instruction detail. /// </param> /// <returns> /// An array of ARM operands. /// </returns> internal static ArmOperand[] Create(CapstoneDisassembler disassembler, ref NativeArmInstructionDetail nativeInstructionDetail) { var operands = new ArmOperand[nativeInstructionDetail.OperandCount]; for (var i = 0; i < operands.Length; i++) { ref var nativeOperand = ref nativeInstructionDetail.Operands[i]; operands[i] = new ArmOperand(disassembler, ref nativeOperand); }
/// <summary> /// Create an ARM Instruction Detail. /// </summary> /// <param name="this"> /// A native ARM instruction detail. /// </param> /// <returns> /// An ARM instruction detail. /// </returns> public static ArmInstructionDetail AsArmInstructionDetail(this NativeArmInstructionDetail @this) { var @object = new ArmInstructionDetail(); @object.CodeCondition = @this.ManagedCodeCondition; @object.CpsFlag = @this.ManagedCpsFlag; @object.CpsMode = @this.ManagedCpsMode; @object.LoadUserModeRegisters = @this.LoadUserModeRegisters; @object.MemoryBarrier = @this.ManagedMemoryBarrier; @object.UpdateFlags = @this.UpdateFlags; @object.VectorDataType = @this.ManagedVectorDataType; @object.VectorSize = @this.VectorSize; @object.WriteBack = @this.WriteBack; // Set Operands. // // ... @object.Operands = @this.ManagedOperands .Select(m => m.AsArmInstructionOperand()) .ToArray(); return(@object); }