/// <summary> /// Create Disassemble Mode. /// </summary> /// <param name="nativeDisassembleMode"> /// A native disassemble mode. /// </param> /// <returns> /// A disassemble mode. /// </returns> private protected override XCoreDisassembleMode CreateDisassembleMode(NativeDisassembleMode nativeDisassembleMode) { return((XCoreDisassembleMode)nativeDisassembleMode); }
/// <summary> /// Create Disassemble Mode. /// </summary> /// <param name="nativeDisassembleMode"> /// A native disassemble mode. /// </param> /// <returns> /// A disassemble mode. /// </returns> private protected override PowerPcDisassembleMode CreateDisassembleMode(NativeDisassembleMode nativeDisassembleMode) { return((PowerPcDisassembleMode)nativeDisassembleMode); }
/// <summary> /// Create Disassemble Mode. /// </summary> /// <param name="nativeDisassembleMode"> /// A native disassemble mode. /// </param> /// <returns> /// A disassemble mode. /// </returns> private protected abstract TDisassembleMode CreateDisassembleMode(NativeDisassembleMode nativeDisassembleMode);
internal static extern NativeCapstoneResultCode CreateDisassembler(DisassembleArchitecture disassembleArchitecture, NativeDisassembleMode disassembleMode, ref IntPtr pDisassembler);
/// <summary> /// Create Disassemble Mode. /// </summary> /// <param name="nativeDisassembleMode"> /// A native disassemble mode. /// </param> /// <returns> /// A disassemble mode. /// </returns> private protected override Arm64DisassembleMode CreateDisassembleMode(NativeDisassembleMode nativeDisassembleMode) { return((Arm64DisassembleMode)nativeDisassembleMode); }
/// <summary> /// Create a Disassembler. /// </summary> /// <param name="disassembleArchitecture"> /// The hardware architecture for the disassembler to use. /// </param> /// <param name="disassembleMode"> /// The hardware mode for the disassembler to use. /// </param> /// <returns> /// A disassembler handle. /// </returns> /// <exception cref="Gee.External.Capstone.CapstoneException"> /// Thrown if a disassembler could not be created. /// </exception> /// <exception cref="System.ArgumentException"> /// Thrown if the disassemble architecture is invalid, or if the disassemble mode is invalid or /// unsupported by the disassemble architecture. /// </exception> /// <exception cref="System.OutOfMemoryException"> /// Thrown if sufficient memory cannot be allocated to perform the operation as a rare indication that the /// system is under heavy load. /// </exception> internal static NativeDisassemblerHandle CreateDisassembler(DisassembleArchitecture disassembleArchitecture, NativeDisassembleMode disassembleMode) { var pDisassembler = IntPtr.Zero; var resultCode = NativeCapstoneImport.CreateDisassembler(disassembleArchitecture, disassembleMode, ref pDisassembler); if (resultCode != NativeCapstoneResultCode.Ok) { if (resultCode == NativeCapstoneResultCode.UninitializedMemoryManagement) { const string detailMessage = "Memory Management is uninitialized."; throw new CapstoneException(detailMessage); } else if (resultCode == NativeCapstoneResultCode.UnsupportedDisassembleArchitecture) { var detailMessage = $"A disassemble architecture ({disassembleArchitecture}) is invalid."; throw new ArgumentException(detailMessage, nameof(disassembleArchitecture)); } else if (resultCode == NativeCapstoneResultCode.UnsupportedDisassembleMode) { var detailMessage = $"A disassemble mode ({disassembleMode}) is invalid."; throw new ArgumentException(detailMessage, nameof(disassembleMode)); } else if (resultCode == NativeCapstoneResultCode.OutOfMemory) { const string detailMessage = "Sufficient memory could not be allocated."; throw new OutOfMemoryException(detailMessage); } else { const string detailMessage = "A disassembler could not be created."; throw new CapstoneException(detailMessage); } } var hDisassembler = new NativeDisassemblerHandle(pDisassembler); return(hDisassembler); }
/// <summary> /// Set Disassemble Mode Option. /// </summary> /// <param name="hDisassembler"> /// A disassembler handle. /// </param> /// <param name="disassembleMode"> /// A hardware mode for the disassembler to use. /// </param> /// <exception cref="Gee.External.Capstone.CapstoneException"> /// Thrown if the disassemble mode option could not be set. /// </exception> /// <exception cref="System.ArgumentException"> /// Thrown if the disassemble mode is invalid. /// </exception> /// <exception cref="System.ObjectDisposedException"> /// Thrown if the disassembler handle is disposed. /// </exception> internal static void SetDisassembleModeOption(NativeDisassemblerHandle hDisassembler, NativeDisassembleMode disassembleMode) { // ... // // Throws an exception if the operation fails. const NativeDisassemblerOptionType optionType = NativeDisassemblerOptionType.SetDisassembleMode; var resultCode = NativeCapstoneImport.SetDisassemblerOption(hDisassembler, optionType, (IntPtr)disassembleMode); if (resultCode != NativeCapstoneResultCode.Ok) { if (resultCode == NativeCapstoneResultCode.InvalidOption) { var detailMessage = $"An option ({nameof(optionType)}) is invalid."; throw new ArgumentException(detailMessage, nameof(optionType)); } else { var detailMessage = $"A disassembler option ({optionType}) could not be set."; throw new CapstoneException(detailMessage); } } }