assemblyscript/std/impl/memory.ts

28 lines
659 B
TypeScript

/// <reference path="../../assembly.d.ts" />
@global()
class Memory {
static allocate(size: usize): usize {
const ptr: usize = load<usize>(sizeof<usize>());
store<usize>(sizeof<usize>(), ptr + size);
return ptr;
}
static free(ptr: usize): void {
}
static copy(src: usize, dst: usize, count: usize): void {
for (let i: usize = 0; i < count; ++i)
store<u8>(dst + i, load<u8>(src + i));
}
static compare(src: usize, dst: usize, count: usize): i32 {
for (let i: usize = 0; i < count; ++i) {
const d: i32 = (load<u8>(src + i) as i32) - (load<u8>(dst + i) as i32);
if (d) return d;
}
return 0;
}
}