stack.h

<emscripten/stack.h> で定義されている関数を使用すると、WebAssembly データスタック (「ユーザースタック」または「C スタック」と呼ばれることもあります) に関する情報を調べることができます。このデータスタックは、線形メモリ内に含まれるデータです (VM によって管理され、実行中のプログラムからは見えない信頼されたコールスタックとは対照的です)。

uintptr_t emscripten_stack_get_base(void)

スタックの開始アドレスを返します。これは、スタック上にバイトが使用されていない場合にスタックポインタが指すアドレスです。

uintptr_t emscripten_stack_get_end(void)

スタックの終了アドレスを返します。これは、スタック全体が使用されている場合にスタックポインタが指すアドレスです。(終了アドレスが指すアドレスはスタック自体の一部ではありません)。スタックは下方向に成長するため、emscripten_stack_get_end() によって返されるアドレスは、emscripten_stack_get_base() によって返されるアドレスよりも小さいことに注意してください。

void emscripten_stack_set_limits(void* base, void* end)

emscripten_stack_get_base() および emscripten_stack_get_end() によって報告される内部値を設定します。これは、asyncify ファイバーなどの低レベルライブラリでのみ使用する必要があります。

uintptr_t emscripten_stack_get_current(void)

現在のスタックポインタを返します。

size_t emscripten_stack_get_free(void)

スタック上に残っている空きバイト数を返します。これは頻繁に呼び出せるように高速である必要があります。