输入wasm网址以进行解析: 解析wasm描述信息 上传wasm文件以进行调用: var x = mod.instance.exports; // SGnkvaDlpb0= var r = x.processIncoming(importsObject.newStringParam("Hi你好"), true); //var r = x.process(newStringParam("Hi你好")); alert(importsObject.returnStringResult(r)); //console.log(mod.instance.exports.exported_func()); 调用 使用下方imports对象 //var importsObject = {imports: {imported_func: arg => console.log(arg)}}; window.lineBuffer = ""; class ImportsObject { teavmHeapTrace = { init: (p) => { } } teavm = { logString: (p) => returnStringResult(p), logInt: (p) => { }, logOutOfMemory: (p) => { }, currentTimeMillis: (p) => new Date().getTime(), putwchar: this.putwchar, // System.out.println("..."); towupper: (p) => String.fromCharCode(p).toUpperCase().charCodeAt(0), towlower: (p) => String.fromCharCode(p).toLowerCase().charCodeAt(0) } returnStringResult(stringPtr) { let arrayPtr = mod.instance.exports.teavm_stringData(stringPtr); let length = mod.instance.exports.teavm_arrayLength(arrayPtr); let cad = mod.instance.exports.teavm_charArrayData(arrayPtr); let mb = mod.instance.exports.memory.buffer; let arrayData = new DataView(mb, cad, length * 2); var text = length > 0 ? "" : null; for (let i = 0; i < length; ++i) { //从对象数据区读起 let charCode = arrayData.getUint16(i * 2, true); text += String.fromCharCode(charCode); } return text; } newStringParam(stringValue) { let stringPtr = mod.instance.exports.teavm_allocateString(stringValue.length); let arrayPtr = mod.instance.exports.teavm_objectArrayData( mod.instance.exports.teavm_stringData(stringPtr)); let arrayData = new DataView(mod.instance.exports.memory.buffer, arrayPtr, stringValue.length * 2); for (let j = 0; j < stringValue.length; ++j) { arrayData.setUint16(j * 2, stringValue.charCodeAt(j), true); } return stringPtr; } putwchar(charCode) { if (charCode === 10) { console.log(window.lineBuffer); window.lineBuffer = ""; } else { window.lineBuffer += String.fromCharCode(charCode); } } } return new ImportsObject();