Add load.string
to the runtime
This commit is contained in:
parent
0a9f9fd6ad
commit
9f27e956a8
@ -706,6 +706,12 @@ do
|
||||
return by_offset(memory.data, addr).f64
|
||||
end
|
||||
|
||||
function load.string(memory, addr, len)
|
||||
local start = cast(alias_t, memory.data) + addr
|
||||
|
||||
return ffi.string(start, len)
|
||||
end
|
||||
|
||||
function store.i32_n8(memory, addr, value)
|
||||
by_offset(memory.data, addr).i8 = value
|
||||
end
|
||||
|
@ -622,6 +622,7 @@ do
|
||||
local math_floor = math.floor
|
||||
|
||||
local string_byte = string.byte
|
||||
local string_char = string.char
|
||||
local string_unpack = string.unpack
|
||||
|
||||
local reinterpret_f32_i32 = module.reinterpret.f32_i32
|
||||
@ -830,6 +831,18 @@ do
|
||||
return reinterpret_f64_i64(raw)
|
||||
end
|
||||
|
||||
function load.string(memory, addr, len)
|
||||
local buffer = table.create(len)
|
||||
|
||||
for i = 1, len do
|
||||
local raw = load_byte(memory.data, addr + i - 1)
|
||||
|
||||
buffer[i] = string_char(raw)
|
||||
end
|
||||
|
||||
return table.concat(buffer)
|
||||
end
|
||||
|
||||
function store.i32_n8(memory, addr, value)
|
||||
store_byte(memory.data, addr, value)
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user