此代碼在Firefox中很好地工作 - 儘管由於某些原因,將Uint8Array更改爲Uint32array會中斷。在這種情況下,我需要以不同的方式強制數字嗎?爲什麼我不能在ASM.js中使用32位ints數組?
function Module(stdlib, foreign, heap) {
"use asm";
// Variable Declarations
var els = new stdlib.Uint8Array(heap);
// Function Declarations
function firstn(x) {
x = x|0 //32-bit (int)
var i=0;
for (; (i|0) < (x|0); i = (i+1)|0) {
els[i] = i;
}
}
return { firstn: firstn };
}
buf = ArrayBuffer(1024*8)
f = Module(window,{},buf).firstn;
f(5)
console.log(new Uint8Array(buf));
還有一件事 - 這可能發送arraybuffer,並有它產生的最終數組的引用,用C++ emscriptem編譯asm.js嗎?
究竟是什麼突破?你在更改Uint32Array中的哪兩個Uint8Array callites?或者你是否改變了他們? –
當我將Uint8Arrays更改爲Uint32Arrays時,它不會編譯 - 可能是由於需要使用不同的類型。 – NoBugs