一个可以在AVR架构运行WASM的AOT运行时
WASM示例应用代码 包括benchmark
生成的可执行文件
头文件
第三方库 包括AVRORA模拟器
其他运行时测试集
运行时核心代码
数据统计工具
- 可能需要的依赖(Ubuntu系统)
apt install git build-essential wget curl unzip python3 gcc-multilib xxd cmake wabt
apt install gcc-avr avr-libc avrdude gdb-avr openjdk-11-jdk
- 编译wasm代码[可选]
首先编写test.wat
文件(暂时使用文本格式直接编写wasm代码,方便调试)
然后使用以下指令将其转化为.h
格式
wat2wasm test.wat -o test.wasm --enable-annotations -v
wasm2wat test.wasm -o testi.wat
xxd -i test.wasm > test.wasm.h
第一个命令中附加的参数可以方便查看wasm二进制格式的具体情况
第二个命令反向从二进制格式转化为文本格式,可以用于对比验证手动编写代码的正确性
如需测试wat是否正确,可以在app/wasmer-test
下运行python3 instance.py
(依赖: pip install wasmer wasmer_compiler_cranelift
)
即可直接查看结果。
如果在wat中有import的函数,请在instance.py
中同样添加。
- 编译代码
在根目录执行以下shell命令:
rm -rf build
mkdir build&&cd build
cmake ..
make
- 在模拟器中运行
在根目录执行以下shell命令:
cd libs
sh test.sh
- 编译benchmark 在app/benchmark文件夹运行
bash compile.sh
脚本将自动完成benchmark的编译(从C代码到native的elf以及wasm文件)
- 运行benchmark 在libs目录运行
bash wasmbench.sh
可以自动运行所有上一步编译产生的wasm文件,并将结果输出到目录中的[benchname].wasmoutput.txt文件
- native 运行 benchmark 在libs目录运行
bash nativebench.sh
可以自动运行所有第一步编译生成的elf文件,并将结果输出到目录中的[benchname].nativeoutput.txt文件,用于比较runtime的运行效率
- Fork 本仓库
- 新建 Feat_xxx 分支
- 提交代码
- 新建 Pull Request