1 #ifndef ROSE_BinaryAnalysis_Unparser_Aarch32_H
2 #define ROSE_BinaryAnalysis_Unparser_Aarch32_H
3 #include <featureTests.h>
4 #ifdef ROSE_ENABLE_ASM_AARCH32
6 #include <Rose/BinaryAnalysis/Unparser/Base.h>
9 namespace BinaryAnalysis {
12 std::string unparseAarch32Mnemonic(SgAsmAarch32Instruction*);
13 std::string unparseAarch32Expression(
SgAsmExpression*,
const LabelMap*,
const RegisterDictionary*);
15 struct Aarch32Settings:
public Settings {};
20 class Aarch32:
public Base {
21 Aarch32Settings settings_;
24 explicit Aarch32(
const Aarch32Settings &settings)
25 : settings_(settings) {}
30 static Ptr instance(
const Aarch32Settings &settings = Aarch32Settings()) {
31 return Ptr(
new Aarch32(settings));
35 return instance(settings());
38 const Aarch32Settings& settings()
const override {
return settings_; }
39 Aarch32Settings& settings()
override {
return settings_; }
42 void emitInstructionMnemonic(std::ostream&,
SgAsmInstruction*, State&)
const override;
43 void emitOperandBody(std::ostream&,
SgAsmExpression*, State&)
const override;
55 std::string left, right;
57 Parens(
const std::string &left,
const std::string &right)
58 : left(left), right(right) {}
Sawyer::SharedPointer< Node > Ptr
Shared-ownership pointer to an expression Node.
Base class for references to a machine register.
void copy(const Word *src, const BitRange &srcRange, Word *dst, const BitRange &dstRange)
Copy some bits.
Base class for machine instructions.
Main namespace for the ROSE library.
Base class for expressions.