fix i32_n8

This commit is contained in:
Firebolt 2021-10-20 20:11:25 -04:00
parent d304628675
commit 76511d9e20
No known key found for this signature in database
GPG Key ID: 4219518A61A50458

View File

@ -39,8 +39,8 @@ local function rip_u64(x) return math.floor(x / 0x100000000), x % 0x100000000 en
local function merge_u64(hi, lo) return hi * 0x100000000 + lo end local function merge_u64(hi, lo) return hi * 0x100000000 + lo end
local function clear_byte(value, offset) local function clear_byte(value, offset)
offset *= 8; offset *= 8
return bit32.band(value, bit32.bnot(bit32.lshift(0xFF, offset))); return bit32.band(value, bit32.bnot(bit32.lshift(0xFF, offset)))
end end
local function load_byte(memory, addr) local function load_byte(memory, addr)
@ -51,7 +51,7 @@ end
local function store_byte(memory, addr, value) local function store_byte(memory, addr, value)
local offset = addr % 4 local offset = addr % 4
local base = (addr - offset) / 4 local base = (addr - offset) / 4
local old = clear_byte(memory.data[base] or 0, offset); local old = clear_byte(memory.data[base] or 0, offset)
memory.data[base] = bit32.bor(old, bit32.lshift(value, 8 * offset)) memory.data[base] = bit32.bor(old, bit32.lshift(value, 8 * offset))
end end
@ -155,7 +155,7 @@ function store.i32(memory, addr, value)
end end
function store.i32_n8(memory, addr, value) function store.i32_n8(memory, addr, value)
store.i32(memory, addr, bit32.band(value, 0xFF)) store_byte(memory, addr, bit32.band(value, 0xFF))
end end
function store.i64(memory, addr, value) function store.i64(memory, addr, value)