7 #ifndef RETDEC_BIN2LLVMIR_OPTIMIZATIONS_WRITER_DSM_WRITER_DSM_H
8 #define RETDEC_BIN2LLVMIR_OPTIMIZATIONS_WRITER_DSM_WRITER_DSM_H
12 #include <llvm/IR/Module.h>
13 #include <llvm/Pass.h>
37 void run(std::ostream& ret);
65 const std::string& objVal =
"");
72 const llvm::ConstantDataArray* cda);
85 std::map<retdec::common::Address, const retdec::common::Function*>
_addr2fnc;
Mapping of LLVM instructions to underlying ASM instructions.
Config DB provider for bin2llvmirl.
Definition: asm_instruction.h:34
Definition: writer_dsm.h:24
void generateInstruction(AsmInstruction &ai, std::ostream &ret)
Definition: writer_dsm.cpp:279
void generateHeader(std::ostream &ret)
Definition: writer_dsm.cpp:110
void findLongestInstruction()
Definition: writer_dsm.cpp:647
void generateAlignedAddress(retdec::common::Address addr, std::ostream &ret)
Definition: writer_dsm.cpp:621
Abi * _abi
Definition: writer_dsm.h:81
std::string processInstructionDsm(AsmInstruction &ai)
Definition: writer_dsm.cpp:286
void generateDataSeg(const retdec::loader::Segment *seg, std::ostream &ret)
Definition: writer_dsm.cpp:425
static char ID
Definition: writer_dsm.h:26
std::string reduceNegativeNumbers(const std::string &str)
Find negative numbers in additions and change it to subtractions.
Definition: writer_dsm.cpp:584
std::map< retdec::common::Address, const retdec::common::Function * > _addr2fnc
Definition: writer_dsm.h:85
void generateDataRange(retdec::common::Address start, retdec::common::Address end, std::ostream &ret)
Definition: writer_dsm.cpp:433
void generateCode(std::ostream &ret)
Definition: writer_dsm.cpp:124
std::string escapeString(const std::string &str)
Definition: writer_dsm.cpp:543
const std::string INSTR_SEPARATOR
Definition: writer_dsm.h:89
std::size_t _longestAddr
Definition: writer_dsm.h:84
const std::string ALIGN
Definition: writer_dsm.h:88
llvm::Module * _module
Definition: writer_dsm.h:78
std::size_t _longestInst
Definition: writer_dsm.h:83
FileImage * _objf
Definition: writer_dsm.h:80
std::string getString(const retdec::common::Object *cgv, const llvm::ConstantDataArray *cda)
Definition: writer_dsm.cpp:679
DsmWriter()
Definition: writer_dsm.cpp:37
void getAsmInstructionHex(AsmInstruction &ai, std::ostream &ret)
Definition: writer_dsm.cpp:250
virtual bool runOnModule(llvm::Module &m) override
Definition: writer_dsm.cpp:47
const std::size_t DATA_SEGMENT_LINE
Definition: writer_dsm.h:87
std::string getFunctionName(llvm::Function *f) const
Definition: writer_dsm.cpp:707
void run(std::ostream &ret)
Definition: writer_dsm.cpp:96
void findLongestAddress()
Definition: writer_dsm.cpp:636
void generateCodeSeg(const retdec::loader::Segment *seg, std::ostream &ret)
Definition: writer_dsm.cpp:153
void generateData(std::ostream &ret)
Definition: writer_dsm.cpp:404
Config * _config
Definition: writer_dsm.h:79
bool runOnModuleCustom(llvm::Module &m, Config *c, FileImage *objf, Abi *abi, std::ostream &ret)
Definition: writer_dsm.cpp:81
void generateFunction(const retdec::common::Function *fnc, std::ostream &ret)
Definition: writer_dsm.cpp:190
Definition: fileimage.h:27
Definition: function.h:36
File image provider for bin2llvmirl.
The frontend-end part of the decompiler.
Definition: archive_wrapper.h:19