#include <vector>
#include <cstdarg>
#include <sstream>
+#include <stdlib.h>
class arg_t
{
class load_address_t : public arg_t
{
public:
+ load_address_t() {}
virtual std::string to_string(insn_t insn) const
{
std::stringstream s;
class store_address_t : public arg_t
{
public:
+ store_address_t() {}
virtual std::string to_string(insn_t insn) const
{
std::stringstream s;
class amo_address_t : public arg_t
{
public:
+ amo_address_t() {}
virtual std::string to_string(insn_t insn) const
{
std::stringstream s;
class xrd_reg_t : public arg_t
{
public:
+ xrd_reg_t() {}
virtual std::string to_string(insn_t insn) const
{
return xpr_to_string[insn.itype.rd];
class xrs1_reg_t : public arg_t
{
public:
+ xrs1_reg_t() {}
virtual std::string to_string(insn_t insn) const
{
return xpr_to_string[insn.itype.rs1];
class xrs2_reg_t : public arg_t
{
public:
+ xrs2_reg_t() {}
virtual std::string to_string(insn_t insn) const
{
return xpr_to_string[insn.rtype.rs2];
class frd_reg_t : public arg_t
{
public:
+ frd_reg_t() {}
virtual std::string to_string(insn_t insn) const
{
return fpr_to_string[insn.ftype.rd];
class frs1_reg_t : public arg_t
{
public:
+ frs1_reg_t() {}
virtual std::string to_string(insn_t insn) const
{
return fpr_to_string[insn.ftype.rs1];
class frs2_reg_t : public arg_t
{
public:
+ frs2_reg_t() {}
virtual std::string to_string(insn_t insn) const
{
return fpr_to_string[insn.ftype.rs2];
class frs3_reg_t : public arg_t
{
public:
+ frs3_reg_t() {}
virtual std::string to_string(insn_t insn) const
{
return fpr_to_string[insn.ftype.rs3];
class pcr_reg_t : public arg_t
{
public:
+ pcr_reg_t() {}
virtual std::string to_string(insn_t insn) const
{
std::stringstream s;
class imm_t : public arg_t
{
public:
+ imm_t() {}
virtual std::string to_string(insn_t insn) const
{
std::stringstream s;
class bigimm_t : public arg_t
{
public:
+ bigimm_t() {}
virtual std::string to_string(insn_t insn) const
{
std::stringstream s;
class branch_target_t : public arg_t
{
public:
+ branch_target_t() {}
virtual std::string to_string(insn_t insn) const
{
std::stringstream s;
class jump_target_t : public arg_t
{
public:
+ jump_target_t() {}
virtual std::string to_string(insn_t insn) const
{
std::stringstream s;