#include "lua-int.hpp" #include "memorymanip.hpp" namespace { template class lua_read_memory : public lua_function { public: lua_read_memory(const std::string& name) : lua_function(name) {} int invoke(lua_State* LS) { uint32_t addr = get_numeric_argument(LS, 1, fname.c_str()); lua_pushnumber(LS, static_cast(rfun(addr))); return 1; } }; template class lua_write_memory : public lua_function { public: lua_write_memory(const std::string& name) : lua_function(name) {} int invoke(lua_State* LS) { uint32_t addr = get_numeric_argument(LS, 1, fname.c_str()); T value = get_numeric_argument(LS, 2, fname.c_str()); wfun(addr, value); return 0; } }; lua_read_memory rub("memory.readbyte"); lua_read_memory rsb("memory.readsbyte"); lua_read_memory ruw("memory.readword"); lua_read_memory rsw("memory.readsword"); lua_read_memory rud("memory.readdword"); lua_read_memory rsd("memory.readsdword"); lua_read_memory ruq("memory.readqword"); lua_read_memory rsq("memory.readsqword"); lua_write_memory wb("memory.writebyte"); lua_write_memory ww("memory.writeword"); lua_write_memory wd("memory.writedword"); lua_write_memory wq("memory.writeqword"); }