首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Perl的Wasm::Wasmtime中使用二进制WASM文件?

如何在Perl的Wasm::Wasmtime中使用二进制WASM文件?
EN

Stack Overflow用户
提问于 2022-04-12 23:09:43
回答 1查看 68关注 0票数 2

我有以下代码,这些代码在Perl上按预期运行

代码语言:javascript
复制
use Wasm::Wasmtime;
 
my $store = Wasm::Wasmtime::Store->new;
my $module = Wasm::Wasmtime::Module->new( $store->engine, wat => q{
  (module
   (func (export "add") (param i32 i32) (result i32)
     local.get 0
     local.get 1
     i32.add)
  )
});
 
my $instance = Wasm::Wasmtime::Instance->new($module, $store);
my $add = $instance->exports->add;
print $add->call(1,2), "\n";  # 3

但是我有二进制wasm文件,我怎么能指向它而不是WAT,在->new里面有什么想法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-13 20:43:26

正如基思在他的评论中所暗示的那样,诀窍是只给出一个file论点,而不是给Wasm::Wasmtime::Module->new一个wat论点。这个片段将您提供的WAT转换为磁盘.wasm文件,然后加载并运行它。如果您已经拥有了.wasm文件,那么显然不需要使用显示的小wat2file函数:

代码语言:javascript
复制
use Wasm::Wasmtime;

my $filename = 'myfile.wasm';

# this is just to make your WAT text into a disk WASM file, making this self-contained
# don't use it if you already have a .wasm file already!
my $wat = q{
  (module
   (func (export "add") (param i32 i32) (result i32)
     local.get 0
     local.get 1
     i32.add)
  )
};
wat2file($filename, $wat);

my $store = Wasm::Wasmtime::Store->new;
my $module = Wasm::Wasmtime::Module->new($store->engine, file => $filename);
my $instance = Wasm::Wasmtime::Instance->new($module, $store);
my $add = $instance->exports->add;
print $add->call(1,2), "\n";  # 3

sub wat2file {
  my ($filename, $wat) = @_;
  require Wasm::Wasmtime::Wat2Wasm;
  open my $fh, '>', $filename;
  print $fh Wasm::Wasmtime::Wat2Wasm::wat2wasm($wat);
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71850080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档