stack.h

Die in <emscripten/stack.h> definierten Funktionen ermöglichen die Überprüfung von Informationen über den WebAssembly-Datenstack (manchmal auch als „Benutzer-Stack“ oder „C-Stack“ bezeichnet). Dieser Datenstack ist der in den linearen Speicher aufgenommene Dateninhalt (im Gegensatz zum vertrauenswürdigen Aufruf-Stack, der von der VM verwaltet wird und für das laufende Programm nicht sichtbar ist).

uintptr_t emscripten_stack_get_base(void)

Gibt die Startadresse des Stacks zurück. Dies ist die Adresse, auf die der Stack-Zeiger zeigen würde, wenn keine Bytes auf dem Stack verwendet werden.

uintptr_t emscripten_stack_get_end(void)

Gibt die Endadresse des Stacks zurück. Dies ist die Adresse, auf die der Stack-Zeiger zeigen würde, wenn der gesamte Stack verwendet wird. (Die vom Ende angezeigte Adresse ist nicht Teil des Stacks selbst). Beachten Sie, dass der Stack nach unten wächst, sodass die von emscripten_stack_get_end() zurückgegebene Adresse kleiner ist als emscripten_stack_get_base().

void emscripten_stack_set_limits(void* base, void* end)

Setzt die internen Werte, die von emscripten_stack_get_base() und emscripten_stack_get_end() gemeldet werden. Dies sollte nur von Low-Level-Bibliotheken wie Asyncify-Fasern verwendet werden.

uintptr_t emscripten_stack_get_current(void)

Gibt den aktuellen Stack-Zeiger zurück.

size_t emscripten_stack_get_free(void)

Gibt die Anzahl der freien Bytes zurück, die auf dem Stack verbleiben. Dies muss schnell sein, damit es häufig aufgerufen werden kann.