LLVM 19.0.0git
Functions
Disassembler.cpp File Reference
#include "Disassembler.h"
#include "llvm-c/Disassembler.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/MC/MCAsmInfo.h"
#include "llvm/MC/MCContext.h"
#include "llvm/MC/MCDisassembler/MCDisassembler.h"
#include "llvm/MC/MCDisassembler/MCRelocationInfo.h"
#include "llvm/MC/MCDisassembler/MCSymbolizer.h"
#include "llvm/MC/MCInst.h"
#include "llvm/MC/MCInstPrinter.h"
#include "llvm/MC/MCInstrDesc.h"
#include "llvm/MC/MCInstrInfo.h"
#include "llvm/MC/MCInstrItineraries.h"
#include "llvm/MC/MCRegisterInfo.h"
#include "llvm/MC/MCSchedule.h"
#include "llvm/MC/MCSubtargetInfo.h"
#include "llvm/MC/MCTargetOptions.h"
#include "llvm/MC/TargetRegistry.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/FormattedStream.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/TargetParser/Triple.h"
#include <cassert>
#include <cstring>

Go to the source code of this file.

Functions

LLVMDisasmContextRef LLVMCreateDisasmCPUFeatures (const char *TT, const char *CPU, const char *Features, void *DisInfo, int TagType, LLVMOpInfoCallback GetOpInfo, LLVMSymbolLookupCallback SymbolLookUp)
 Create a disassembler for the TripleName, a specific CPU and specific feature string.
 
LLVMDisasmContextRef LLVMCreateDisasmCPU (const char *TT, const char *CPU, void *DisInfo, int TagType, LLVMOpInfoCallback GetOpInfo, LLVMSymbolLookupCallback SymbolLookUp)
 Create a disassembler for the TripleName and a specific CPU.
 
LLVMDisasmContextRef LLVMCreateDisasm (const char *TT, void *DisInfo, int TagType, LLVMOpInfoCallback GetOpInfo, LLVMSymbolLookupCallback SymbolLookUp)
 Create a disassembler for the TripleName.
 
void LLVMDisasmDispose (LLVMDisasmContextRef DCR)
 Dispose of a disassembler context.
 
static void emitComments (LLVMDisasmContext *DC, formatted_raw_ostream &FormattedOS)
 Emits the comments that are stored in DC comment stream.
 
static int getItineraryLatency (LLVMDisasmContext *DC, const MCInst &Inst)
 Gets latency information for Inst from the itinerary scheduling model, based on DC information.
 
static int getLatency (LLVMDisasmContext *DC, const MCInst &Inst)
 Gets latency information for Inst, based on DC information.
 
static void emitLatency (LLVMDisasmContext *DC, const MCInst &Inst)
 Emits latency information in DC->CommentStream for Inst, based on the information available in DC.
 
size_t LLVMDisasmInstruction (LLVMDisasmContextRef DCR, uint8_t *Bytes, uint64_t BytesSize, uint64_t PC, char *OutString, size_t OutStringSize)
 Disassemble a single instruction using the disassembler context specified in the parameter DC.
 
int LLVMSetDisasmOptions (LLVMDisasmContextRef DCR, uint64_t Options)
 Set the disassembler's options.
 

Function Documentation

◆ emitComments()

static void emitComments ( LLVMDisasmContext DC,
formatted_raw_ostream FormattedOS 
)
static

◆ emitLatency()

static void emitLatency ( LLVMDisasmContext DC,
const MCInst Inst 
)
static

Emits latency information in DC->CommentStream for Inst, based on the information available in DC.

Definition at line 231 of file Disassembler.cpp.

References llvm::LLVMDisasmContext::CommentStream, getLatency(), and llvm::Latency.

Referenced by LLVMDisasmInstruction().

◆ getItineraryLatency()

static int getItineraryLatency ( LLVMDisasmContext DC,
const MCInst Inst 
)
static

Gets latency information for Inst from the itinerary scheduling model, based on DC information.

Returns
The maximum expected latency over all the operands or -1 if no information is available.

Definition at line 169 of file Disassembler.cpp.

References llvm::StringRef::empty(), llvm::MCInstrInfo::get(), llvm::LLVMDisasmContext::getCPU(), llvm::LLVMDisasmContext::getInstrInfo(), llvm::MCSubtargetInfo::getInstrItineraryForCPU(), llvm::MCInst::getNumOperands(), llvm::MCInst::getOpcode(), llvm::InstrItineraryData::getOperandCycle(), llvm::LLVMDisasmContext::getSubtargetInfo(), Idx, and llvm::Latency.

Referenced by getLatency().

◆ getLatency()

static int getLatency ( LLVMDisasmContext DC,
const MCInst Inst 
)
static