| /*===-- llvm-c/Disassembler.h - Disassembler Public C Interface ---*- C -*-===*\ | |
| |* *| | |
| |* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| | |
| |* Exceptions. *| | |
| |* See https://llvm.org/LICENSE.txt for license information. *| | |
| |* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| | |
| |* *| | |
| |*===----------------------------------------------------------------------===*| | |
| |* *| | |
| |* This header provides a public interface to a disassembler library. *| | |
| |* LLVM provides an implementation of this interface. *| | |
| |* *| | |
| \*===----------------------------------------------------------------------===*/ | |
| #ifndef LLVM_C_DISASSEMBLER_H | |
| #define LLVM_C_DISASSEMBLER_H | |
| #include "llvm-c/DisassemblerTypes.h" | |
| #include "llvm-c/ExternC.h" | |
| #include "llvm-c/Visibility.h" | |
| /** | |
| * @defgroup LLVMCDisassembler Disassembler | |
| * @ingroup LLVMC | |
| * | |
| * @{ | |
| */ | |
| LLVM_C_EXTERN_C_BEGIN | |
| /** | |
| * Create a disassembler for the TripleName. Symbolic disassembly is supported | |
| * by passing a block of information in the DisInfo parameter and specifying the | |
| * TagType and callback functions as described above. These can all be passed | |
| * as NULL. If successful, this returns a disassembler context. If not, it | |
| * returns NULL. This function is equivalent to calling | |
| * LLVMCreateDisasmCPUFeatures() with an empty CPU name and feature set. | |
| */ | |
| LLVM_C_ABI LLVMDisasmContextRef LLVMCreateDisasm( | |
| const char *TripleName, void *DisInfo, int TagType, | |
| LLVMOpInfoCallback GetOpInfo, LLVMSymbolLookupCallback SymbolLookUp); | |
| /** | |
| * Create a disassembler for the TripleName and a specific CPU. Symbolic | |
| * disassembly is supported by passing a block of information in the DisInfo | |
| * parameter and specifying the TagType and callback functions as described | |
| * above. These can all be passed * as NULL. If successful, this returns a | |
| * disassembler context. If not, it returns NULL. This function is equivalent | |
| * to calling LLVMCreateDisasmCPUFeatures() with an empty feature set. | |
| */ | |
| LLVM_C_ABI LLVMDisasmContextRef LLVMCreateDisasmCPU( | |
| const char *Triple, const char *CPU, void *DisInfo, int TagType, | |
| LLVMOpInfoCallback GetOpInfo, LLVMSymbolLookupCallback SymbolLookUp); | |
| /** | |
| * Create a disassembler for the TripleName, a specific CPU and specific feature | |
| * string. Symbolic disassembly is supported by passing a block of information | |
| * in the DisInfo parameter and specifying the TagType and callback functions as | |
| * described above. These can all be passed * as NULL. If successful, this | |
| * returns a disassembler context. If not, it returns NULL. | |
| */ | |
| LLVM_C_ABI LLVMDisasmContextRef LLVMCreateDisasmCPUFeatures( | |
| const char *Triple, const char *CPU, const char *Features, void *DisInfo, | |
| int TagType, LLVMOpInfoCallback GetOpInfo, | |
| LLVMSymbolLookupCallback SymbolLookUp); | |
| /** | |
| * Set the disassembler's options. Returns 1 if it can set the Options and 0 | |
| * otherwise. | |
| */ | |
| LLVM_C_ABI int LLVMSetDisasmOptions(LLVMDisasmContextRef DC, uint64_t Options); | |
| /* The option to produce marked up assembly. */ | |
| #define LLVMDisassembler_Option_UseMarkup 1 | |
| /* The option to print immediates as hex. */ | |
| #define LLVMDisassembler_Option_PrintImmHex 2 | |
| /* The option use the other assembler printer variant */ | |
| #define LLVMDisassembler_Option_AsmPrinterVariant 4 | |
| /* The option to set comment on instructions */ | |
| #define LLVMDisassembler_Option_SetInstrComments 8 | |
| /* The option to print latency information alongside instructions */ | |
| #define LLVMDisassembler_Option_PrintLatency 16 | |
| /* The option to print in color */ | |
| #define LLVMDisassembler_Option_Color 32 | |
| /** | |
| * Dispose of a disassembler context. | |
| */ | |
| LLVM_C_ABI void LLVMDisasmDispose(LLVMDisasmContextRef DC); | |
| /** | |
| * Disassemble a single instruction using the disassembler context specified in | |
| * the parameter DC. The bytes of the instruction are specified in the | |
| * parameter Bytes, and contains at least BytesSize number of bytes. The | |
| * instruction is at the address specified by the PC parameter. If a valid | |
| * instruction can be disassembled, its string is returned indirectly in | |
| * OutString whose size is specified in the parameter OutStringSize. This | |
| * function returns the number of bytes in the instruction or zero if there was | |
| * no valid instruction. | |
| */ | |
| LLVM_C_ABI size_t LLVMDisasmInstruction(LLVMDisasmContextRef DC, uint8_t *Bytes, | |
| uint64_t BytesSize, uint64_t PC, | |
| char *OutString, size_t OutStringSize); | |
| /** | |
| * @} | |
| */ | |
| LLVM_C_EXTERN_C_END | |
| #endif /* LLVM_C_DISASSEMBLER_H */ |