1 #ifndef ROSE_BinaryAnalysis_UnparserArm_H
2 #define ROSE_BinaryAnalysis_UnparserArm_H
3 #include <featureTests.h>
4 #ifdef ROSE_ENABLE_ASM_A64
6 #include <BinaryUnparserBase.h>
12 struct ArmSettings:
public Settings {};
17 class Arm:
public Base {
18 ArmSettings settings_;
21 explicit Arm(
const ArmSettings &settings)
22 : settings_(settings) {}
27 static Ptr instance(
const ArmSettings &settings = ArmSettings()) {
28 return Ptr(
new Arm(settings));
31 Ptr copy() const ROSE_OVERRIDE {
32 return instance(settings());
35 const ArmSettings& settings() const ROSE_OVERRIDE {
return settings_; }
36 ArmSettings& settings() ROSE_OVERRIDE {
return settings_; }
39 void emitInstructionMnemonic(std::ostream&,
SgAsmInstruction*, State&) const ROSE_OVERRIDE;
43 static
std::
string unparseArmCondition(A64InstructionCondition);
44 void outputExpr(
std::ostream&, SgAsmExpression*, State&) const;
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.