0.0.0 |
|
---|
#15 在 #token-tree
每月下载量 31 次
2KB
官方测试套件
由于这个 WebAssembly 的实现旨在符合官方规范,因此它针对官方测试套件进行测试。该 脚本
模块处理官方测试脚本格式的解析和执行。然而,此实现不支持在大多数脚本中使用的 WebAssembly 文本格式。因此,测试脚本必须转换为二进制格式。这需要两个步骤。
修补官方解释器
官方解释器以十进制格式打印浮点数,这会导致精度丢失并破坏一些测试。相反,浮点数应以十六进制格式打印以保留其精度。可以通过对官方解释器应用以下补丁来获得此效果
diff --git a/interpreter/exec/float.ml b/interpreter/exec/float.ml
index 3237959..d4274f7 100644
--- a/interpreter/exec/float.ml
+++ b/interpreter/exec/float.ml
@@ -237,7 +237,8 @@ struct
(if x < Rep.zero then "-" else "") ^
if is_nan x then
"nan:0x" ^ Rep.to_hex_string (Rep.logand (abs x) (Rep.lognot bare_nan))
+ else if is_inf x then
+ "inf"
else
- (* TODO: use sprintf "%h" once we have upgraded to OCaml 4.03 *)
- string_of_float (to_float (abs x))
+ Printf.sprintf "%h" (to_float (abs x))
end
请注意,此补丁需要至少 OCaml 4.03。
转换测试
有了现在已修补的官方解释器,可以使用以下脚本来转换测试
for f in test/core/*.wast; do
interpreter/wasm -d $f -o ${f%.wast}.bin.wast
done