2026-04-16

C言語学習用環境「やさしいC言語、Yasa-C」と同程度のwasm実行環境をいろんな環境で動かせるC言語で実装しました。

コアは、wasmrun.h 277行。いろんな環境でインクルードするだけで下記のように使えます。

#include "../wasmrun.h" #include static const uint8_t add_wasm[] = { 0x00, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x07, 0x01, 0x60, 0x02, 0x7f, 0x7f, 0x01, 0x7f, 0x03, 0x02, 0x01, 0x00, 0x07, 0x07, 0x01, 0x03, 0x61, 0x64, 0x64, 0x00, 0x00, 0x0a, 0x09, 0x01, 0x07, 0x00, 0x20, 0x00, 0x20, 0x01, 0x6a, 0x0b }; int main(void) { Wasmrun m; wasmrun_init(&m); if (!wasmrun_load(&m, add_wasm, sizeof(add_wasm))) { fprintf(stderr, "load error: %s\n", wasmrun_error(&m)); return 1; } int32_t args[] = { 40, 2 }; int32_t result = 0; int has_result = 0; if (!wasmrun_call_export(&m, "add", args, &result, &has_result)) { fprintf(stderr, "run error: %s\n", wasmrun_error(&m)); wasmrun_free(&m); return 1; } if (has_result) printf("%d\n", result); wasmrun_free(&m); return 0; }

(examples/simple.c)


「code4fukui/wasmrun」

シンプルなのでWabAssembly(wasm)の学習にもオススメです!

links
- やさしいC言語、Yasa-C - intとstructだけのCコンパイラ

クリエイティブ・コモンズ・ライセンス
本ブログの記事や写真は「Creative Commons — CC BY 4.0」の下に提供します。記事内で紹介するプログラムや作品は、それぞれに記載されたライセンスを参照ください。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / 「一日一創」画像 / RSS