WebAssembly 初探 – AOT & JIT

October 19, 2020 一、AOT AOT (Ahead-of-Time) 可理解为“提前编译”,将高级语言的代码编译为二进制机器码(汇编指令),运行时直接执行,这里主要区分于“解释执行”,如我们常用的各类脚本语言,都需要对应的 Runtime 边解析边执行,另外如 Java、WebAssembly,其编译后的字节码也是通过 VM 来解释执行,而像C\C++、Rust 等语言,则可以看做 AOT 执行,编译后即为可直接执行的机器码。这里我们通过一个小实验来演示 AOT 的过程: 1、编译 我们以 C 作为实验语言,准备代码: #include <stdio.h> int importFunc(int n); int aotTest(int m) { int a = importFunc(m); putchar('a'); return a * a; } 其中 importFunc 是外部依赖的函数,putchar 是系统库 libc 的函数,然后编译生成 Object 文件 ( x86_64 架构): clang -v –target=x86_64 -emit-llvmContinue reading “WebAssembly 初探 – AOT & JIT”