Когда я пытался скомпилировать следующий фрагмент кода в двоичный файл WebAssembly, я продолжал сталкиваться с предупреждением unresolved symbol: llvm_trap
, что делает код wasm неприемлемым для JS.
emcc test.c -s WASM=1 -s ONLY_MY_CODE=1 -s "EXPORTED_FUNCTIONS=['_test']" -O2 -g -o test.js
test.c (это тестовый код для воспроизведения проблемы без выполнения значимых действий.)
int test(int *buf) {
int C = 1;
// Assuming WebAssembly.Memory buffer has been preloaed with data.
// *T represents the preloaded data here. And We know *T and *buf
// won't overlap in memory.
int *T = 0;
int index = C ^ buf[5];
int right = T[index];
int left = (unsigned)C >> 8;
// warning disappears if this is commented out. But why?
C = left ^ right;
return C;
}
Я не писал кода, связанного с llvm_trap
. У кого-то есть идеи, что это значит?
T
равно NULL.int right = T[index];
. - person MFisherKDX   schedule 08.11.2017WebAssembly.Memory
.*T
здесь просто указатель на определенную позицию в буфере. - person hackjutsu   schedule 08.11.2017