1 #ifndef ROSE_BinaryAnalysis_Unparser_X86_H
2 #define ROSE_BinaryAnalysis_Unparser_X86_H
3 #include <featureTests.h>
4 #ifdef ROSE_ENABLE_BINARY_ANALYSIS
5 #include <Rose/BinaryAnalysis/Unparser/Base.h>
8 namespace BinaryAnalysis {
12 std::string unparseX86Register(
SgAsmInstruction*, RegisterDescriptor,
const RegisterDictionary*);
13 std::string unparseX86Register(RegisterDescriptor,
const RegisterDictionary*);
14 std::string unparseX86Expression(
SgAsmExpression*,
const LabelMap*,
const RegisterDictionary*,
bool leaMode);
15 std::string unparseX86Expression(
SgAsmExpression*,
const LabelMap*,
const RegisterDictionary*);
19 class X86:
public Base {
24 : settings_(settings) {}
28 return Ptr(
new X86(settings));
31 Ptr copy()
const override {
32 return instance(settings());
35 const X86Settings& settings()
const override {
return settings_; }
36 X86Settings& settings()
override {
return settings_; }
39 void emitInstructionMnemonic(std::ostream&,
SgAsmInstruction*, State&)
const override;
40 void emitOperandBody(std::ostream&,
SgAsmExpression*, State&)
const override;
41 void emitTypeName(std::ostream&,
SgAsmType*, State&)
const override;
Base class for machine instructions.
Main namespace for the ROSE library.
Settings that control unparsing.
Represents one Intel x86 machine instruction.
Base class for expressions.
Base class for binary types.