diff --git a/src/builder.hpp b/src/builder.hpp index 92b854a..55b6e07 100644 --- a/src/builder.hpp +++ b/src/builder.hpp @@ -79,8 +79,8 @@ public: void push(uint16_t v) { - m_data[m_ip] = v >> 8; - m_data[m_ip + 1] = v & 0xff; + m_data[m_ip] = v & 0xff; + m_data[m_ip + 1] = v >> 8; m_ip += 2; } diff --git a/src/vm.cpp b/src/vm.cpp index 755087d..437a662 100644 --- a/src/vm.cpp +++ b/src/vm.cpp @@ -145,8 +145,8 @@ uint16_t VM::word(uint16_t addr) const } uint16_t value = 0; - value |= static_cast(m_mem[addr]) << 8; - value |= m_mem[addr + 1]; + value |= m_mem[addr]; + value |= static_cast(m_mem[addr + 1]) << 8; return value; } @@ -167,8 +167,8 @@ void VM::set_word(uint16_t addr, uint16_t value) std::format("invalid address alignment, addr = {}", addr)); } - m_mem[addr] = value >> 8; - m_mem[addr + 1] = value & 0xff; + m_mem[addr] = value & 0xff; + m_mem[addr + 1] = value >> 8; } void VM::set_byte(uint16_t addr, uint8_t value)