WebAssembly - 验证



本章将讨论 `webassembly.validate()` 函数,该函数将验证 `.wasm` 输出。编译 C、C++ 或 Rust 代码后,即可获得 `.wasm` 文件。

您可以使用以下工具来获取 wasm 代码。

语法

语法如下:

WebAssembly.validate(bufferSource);

参数

bufferSource − `bufferSource` 包含来自 C、C++ 或 Rust 程序的二进制代码。它以 TypedArray 或 ArrayBuffer 的形式存在。

返回值

如果 `.wasm` 代码有效,则函数返回 `true`;否则返回 `false`。

让我们尝试一个示例。访问 Wasm fiddler,网址为 https://wasmfiddle.com/,输入您选择的 C 代码并下载 wasm 代码。

Buffer Source

红色标记的块是 C 代码。单击中间的“构建”按钮以执行代码。

Validating

单击“Wasm”按钮下载 `.wasm` 代码。将 `.wasm` 文件保存到您的本地,然后让我们使用它进行验证。

示例

例如:validate.html

<!doctype html>
<html>
   <head> 
      <meta charset="utf-8">
      <title>Testing WASM validate()</title>
   </head>
   <body>
      <script> 
         fetch('program.wasm').then(res => res.arrayBuffer() ).then(function(testbytes) {
         var valid = WebAssembly.validate(testbytes); 
            if (valid) {
               console.log("Valid Wasm Bytes!"); 
            } else {
               console.log("Invalid Wasm Code!"); 
            }
         }); 
      </script> 
   </body>
</html>

我已经在我的 wamp 服务器上托管了上述 `.html` 文件以及下载的 `.wasm` 文件。这是您在浏览器中测试时的输出。

输出

输出如下:

Mentioned
广告