Дас Сурма недавно написал ещё один пост про работу с WebAssembly — "Compiling C to WebAssembly without Emscripten".
В этой статье он показывает как работать с WebAssembly без Emscripten. Есть пример того, как скомпилировать простой C-код в wasm с помощью llvm. Немного разбирается архитектура llvm (бэкенд/фронтенд-компиляторы). Показывается, как работать с динамической памятью, на примере суммирования массива целых чисел. Для выделения памяти в Emscripten используется malloc, но так как в статье рассказывается про более низкий уровень, там используется простой самописный bump-аллокатор памяти.
Статья довольно техническая и очень подробная. Если интересуетесь темой WebAssembly, рекомендую почитать.
#webassembly #llvm #internals
https://dassur.ma/things/c-to-webassembly/
В этой статье он показывает как работать с WebAssembly без Emscripten. Есть пример того, как скомпилировать простой C-код в wasm с помощью llvm. Немного разбирается архитектура llvm (бэкенд/фронтенд-компиляторы). Показывается, как работать с динамической памятью, на примере суммирования массива целых чисел. Для выделения памяти в Emscripten используется malloc, но так как в статье рассказывается про более низкий уровень, там используется простой самописный bump-аллокатор памяти.
Статья довольно техническая и очень подробная. Если интересуетесь темой WebAssembly, рекомендую почитать.
#webassembly #llvm #internals
https://dassur.ma/things/c-to-webassembly/
dassur.ma
Compiling C to WebAssembly without Emscripten — surma.dev
A compiler is just a part of Emscripten. What if we stripped away all the bells and whistles and used just the compiler?