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/InstructionEnumsAarch64.h>
8#include <Rose/BinaryAnalysis/Unparser/Base.h>
11namespace BinaryAnalysis {
14std::string unparseAarch64Mnemonic(SgAsmAarch64Instruction*);
18struct Aarch64Settings:
public Settings {};
23class Aarch64:
public Base {
24 Aarch64Settings settings_;
27 explicit Aarch64(
const Architecture::BaseConstPtr&,
const Aarch64Settings&);
32 static Ptr instance(
const Architecture::BaseConstPtr&,
const Aarch64Settings& = Aarch64Settings());
36 const Aarch64Settings&
settings()
const override {
return settings_; }
37 Aarch64Settings&
settings()
override {
return settings_; }
40 void emitInstructionMnemonic(std::ostream&,
SgAsmInstruction*, State&)
const override;
41 void emitOperandBody(std::ostream&,
SgAsmExpression*, State&)
const override;
44 static std::string unparseArmCondition(Aarch64InstructionCondition);
54 std::string left, right;
56 Parens(
const std::string &left,
const std::string &right)
57 : left(left), right(right) {}
Base class for expressions.
Base class for machine instructions.
Base class for references to a machine register.
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.
std::map< uint64_t, std::string > LabelMap
Map from address to label.
Settings settings
Command-line settings for the rosebud tool.
void copy(const Word *src, const BitRange &srcRange, Word *dst, const BitRange &dstRange)
Copy some bits.