分两步:
- 先把JAVA class翻译为Wasm C的文本格式。
- 再对Wasm C进行编译,产生正式的wasm文件。
举例说明。
源码:
@Export(name = "layoutJs2Java")
public static int[] layoutJs2Java() {
int[] intarray = new int[]{5, 8};
return intarray;
}
中间代码
int32_t layoutJs2Java() {
int32_t _intarray;
int32_t localVar1;
int32_t ___stack__;
___stack__ = meth_otbw_WasmRuntime_allocStack(INT32_C(0));
if (((*((int32_t *) &wasm_heap[INT32_C(468) + 0]) & INT32_C(1)) == INT32_C(0))) {
*((int32_t *) &wasm_heap[___stack__ + 0]) = INT32_C(12);
initclass_tw_WasmBenchmarkStarter();
if ((*((int32_t *) &wasm_heap[___stack__ + 0]) != INT32_C(12))) {
goto block_0;
}
}
*((int32_t *) &wasm_heap[___stack__ + 0]) = INT32_C(11);
_intarray = meth_otr_Allocator_allocateArray(INT32_C(15040), INT32_C(2));
if ((*((int32_t *) &wasm_heap[___stack__ + 0]) == INT32_C(11))) {
localVar1 = _intarray;
if ((INT32_C(0) >= *((int32_t *) &wasm_heap[(localVar1 + INT32_C(8)) + 0]))) {
*((int32_t *) &wasm_heap[___stack__ + 0]) = INT32_C(13);
teavm_throwArrayIndexOutOfBoundsException();
} else {
*((int32_t *) &wasm_heap[((localVar1 + INT32_C(12)) + (INT32_C(0)
关注
打赏
热门博文
- 历史最高名次:17
- 日常收集的妙语
- git更新:Your local changes to the following files would be overwritten by merge
- Github通过PR提交代码到开源库
- Github参与OpenJDK8的开发指南
- FreeType可以指定斜体值了!祝贺修改代码整合进入FreeType
- JDK/FreeType中关于斜的英文有哪些
- WINDOWS编译ffmpeg:LINK : fatal error LNK1104: 无法打开文件“LIBCMT.lib”
- 全网首发:编译ffmpeg: error: ‘VFW_E_NOT_FOUND‘ undeclared ; did you mean ‘NTE_NOT_FOUND‘?
- WINDOWS+VS2012+msys2编译ffmpeg成功,DLL不能用