diff --git a/src/builder.hpp b/src/builder.hpp index 55b6e07..92b854a 100644 --- a/src/builder.hpp +++ b/src/builder.hpp @@ -79,8 +79,8 @@ public: void push(uint16_t v) { - m_data[m_ip] = v & 0xff; - m_data[m_ip + 1] = v >> 8; + m_data[m_ip] = v >> 8; + m_data[m_ip + 1] = v & 0xff; m_ip += 2; } diff --git a/src/vm.cpp b/src/vm.cpp index 437a662..755087d 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 |= m_mem[addr]; - value |= static_cast(m_mem[addr + 1]) << 8; + value |= static_cast(m_mem[addr]) << 8; + value |= m_mem[addr + 1]; 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 & 0xff; - m_mem[addr + 1] = value >> 8; + m_mem[addr] = value >> 8; + m_mem[addr + 1] = value & 0xff; } void VM::set_byte(uint16_t addr, uint8_t value)