Exemplo n.º 1
0
        /// <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);
            }
Exemplo n.º 2
0
        /// <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);
        }