sample\iron\sample_wasm.hsp » Plain Format
;============================================================
; sample_wasm.hsp — hspwasm.dll 最小デモ
;
; add.wasm (エクスポート関数 add(a: i32, b: i32) -> i32) を
; ロードして呼び出すサンプル。
;
; add.wasm のビルド例 (wat2wasm):
; ;; add.wat
; (module
; (func (export "add") (param i32 i32) (result i32)
; local.get 0
; local.get 1
; i32.add)
; (memory (export "memory") 1))
;
; wat2wasm add.wat -o add.wasm
;
; または Rust で:
; #[no_mangle]
; pub extern "C" fn add(a: i32, b: i32) -> i32 { a + b }
; cargo build --target wasm32-unknown-unknown --release
;============================================================
#include "hsp3_net_64.as"
#include "iron_wasm.hsp"
title "hspwasm sample"
screen 0, 640, 400
font "MS Gothic", 14
wasm_open "add.wasm"
h = stat
if h < 0 {
mes "wasm_open に失敗しました (code=" + h + ")"
mes "add.wasm が見つからないか、壊れている可能性があります。"
stop
}
mes "add.wasm をハンドル " + h + " でロードしました"
; linear memory サイズ
wasm_mem_size h
mes "linear memory size = " + stat + " bytes"
; add(3, 4)
r = wasm_call2(h, "add", 3, 4)
mes "add(3, 4) = " + r
; add(100, 200)
r = wasm_call2(h, "add", 100, 200)
mes "add(100, 200) = " + r
; argc=0 テスト (もし wasm 側に get_zero があれば)
; r = wasm_call0(h, "get_zero")
; mes "get_zero() = " + r
wasm_close h
mes "OK"
stop