【wasm】JS 与 c/c++ 交换数据

本文讨论如何在编译为WebAssembly模块后的C/C++程序和js之间进行数据交换。本质上js和WebAssembly共享相同的线性内存,这意味着js和WebAssembly可以在同一内存位置读写数据。 从js读取c/c++全局变量 编译后全局变量已经分配好内存,所以可以通过共享线性内存的偏移进行读写。 #ifdef __EMSCRIPTEN__ #include <emscripten.h> #...

[阅读更多 →]

【wasm】快速排序,并在小程序引用

c语言部分 如果功能比较简单,可以直接使用WasmFiddle将 c/c++ 编译成 wasm。这个示例比较简单,先声明一个全局数组变量,由 js 写入和读取该变量。wasm 不仅可以导出函数,也可以从js导入函数,也就是在js实现由c/c++声明的 extern 函数。 // 定义待排序数组的大小 #define N 10 // 定义全局数组,在模块初始化时就在内存分配 int array[N]; // 定义j...

[阅读更多 →]

【wasm】自定义函数

c语言片段 新建文件名为side_module.c的文件 int Increment(int value) { return value + 1; } int Decrement(int value) { return value - 1; } O1编译 命令 emcc side_module.c -s SIDE_MODULE=2 -O1 -s EXPORTED_FUNCTIONS='["_Inc...

[阅读更多 →]