diff options
Diffstat (limited to 'intel.cpp')
| -rw-r--r-- | intel.cpp | 29 | 
1 files changed, 28 insertions, 1 deletions
| @@ -372,6 +372,16 @@ protected:   std::vector<uint8_t> machine_code;  }; +class Op_Label: public OpSimple +{ +public: + Op_Label(const std::string& name) : OpSimple({}), m_name(name) {} + std::string name(){return m_name;} + +private: + std::string m_name; +}; +  class Op_nop: public OpSimple  {  public: @@ -379,7 +389,24 @@ public:  }; -bool registered { registerOp("nop", [](AsmArgs& args) -> std::shared_ptr<Op>{ return std::make_shared<Op_nop>(); }) }; +template<typename T> +std::string mangleNameOne(const std::string& s) +{ + return s + "_" + typeid(T).name(); +} + +template<typename T, typename... Targs> +std::string mangleName(const std::string& s) +{ + if constexpr (sizeof...(Targs) == 0) +  return mangleNameOne<T>(s); + else +  return mangleName<Targs...>(s + "_" + typeid(T).name()); +} + +bool registered { registerOp("nop", [](AsmArgs& args) -> std::shared_ptr<Op>{ +                             return std::make_shared<Op_nop>(); +                             }) };  class Assembler { | 
