1 #ifndef ROSE_BinaryAnalysis_Unparser_Aarch64_H
2 #define ROSE_BinaryAnalysis_Unparser_Aarch64_H
3 #include <featureTests.h>
4 #ifdef ROSE_ENABLE_ASM_AARCH64
6 #include <Rose/BinaryAnalysis/BasicTypes.h>
7 #include <Rose/BinaryAnalysis/Unparser/Base.h>
10 namespace BinaryAnalysis {
13 std::string unparseAarch64Mnemonic(SgAsmAarch64Instruction*);
17 struct Aarch64Settings:
public Settings {};
22 class Aarch64:
public Base {
23 Aarch64Settings settings_;
26 explicit Aarch64(
const Aarch64Settings &settings)
27 : settings_(settings) {}
32 static Ptr instance(
const Aarch64Settings &settings = Aarch64Settings()) {
33 return Ptr(
new Aarch64(settings));
40 const Aarch64Settings&
settings()
const override {
return settings_; }
41 Aarch64Settings&
settings()
override {
return settings_; }
44 void emitInstructionMnemonic(std::ostream&,
SgAsmInstruction*, State&)
const override;
45 void emitOperandBody(std::ostream&,
SgAsmExpression*, State&)
const override;
48 static std::string unparseArmCondition(Aarch64InstructionCondition);
58 std::string left, right;
60 Parens(
const std::string &left,
const std::string &right)
61 : left(left), right(right) {}
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.
Sawyer::SharedPointer< RegisterDictionary > RegisterDictionaryPtr
Reference counting pointer.
Settings settings
Command-line settings for the rosebud tool.
Main namespace for the ROSE library.
Base class for expressions.
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.