欢迎来到神奇下载!我们唯一域名是:www.sqxzz.com

innative 官方版 v0.1.10

更新时间:2022-06-15 14:04:42

软件介绍

innative可以帮助用户编辑WebAssembly,您可以在软件上获取构建WebAssembly模块需要的大部分功能,构建完毕就可以将其添加到其他开发软件使用,结合SDK功能就可以嵌入到新的项目使用,让用户可以快速完成新项目编程,软件提供了一个符合标准的WebAssembly环境,还允许进行广泛的自定义,并且包括一些非标准的内置功能,从而使本机WebAssembly模块的工作更加轻松,您可以通过静态嵌入、静态共享嵌入、动态共享嵌入的方式部署innative,也可以通过命令行的方式运行软件!

innative软件功能

inNative是跨平台的WebAssembly实现,可以嵌入到您的程序中,也可以作为的运行时安装。它将WebAssembly模块编译成C二进制文件,可以将其链接为静态或动态库,并可以通过简单的C接口进行访问。

尽管inNative符合标准,但它为您提供了一些选项,可以调整要实施的标准的哪些部分,从而允许您指定如何对所生成的WebAssembly二进制文件进行沙盒化(或不进行沙盒化)。这使inNative可以安全地在主机程序中执行沙盒WebAssembly,或者像本机程序一样编译调用内核函数的模块。

辅助功能

该inNative默认环境提供了几个辅助功能旨在使调试本地WebAssembly容易。所有这些函数都被视为具有默认调用约定的原始C函数,并且应像其他任何C函数一样导入。编译器本身还提供了一些内在函数,从WebAssembly的角度来看它们就像辅助函数。其中一些功能并不安全,如果启用了白名单,则必须像其他C函数一样将所有白名单列入白名单。

本地cref扩展

inNative实现cref代表C指针的自定义值类型。在大多数情况下,它的行为anyref与“引用类型建议”中的行为类似,充当传递给C存储器的不透明指针。anyref但是,与不同,您可以传递i32或传递i给cref类型。该类型具有二进制编码,可以在任何标准的webassembly模块中实现,但是由于没有编译器可以生成该值,因此该类型主要用于.wat文件中。

innative软件特色

inNative随附执行3个测试阶段的测试工具:

内部测试,旨在测试本机特定结构和非标准Webassembly扩展

基准测试,针对一个函数的多个Webassembly编译版本测试C ++版本的能

标准的Web程序集测试,这是inNative实施.wast的当前规范中指定的所有核心文件。

命令行

inNative命令行使您可以访问已安装的运行时的功能,从而可以通过多种方式来编译,反编译或运行Webassembly模块。命令行接受格式为的WebAssembly文件列表.wasm,.wat或.wast根据提供的命令行选项将它们链接在一起。它还具有通过某些标志或命令行开关访问的其他功能

innative使用说明

静态嵌入

对于要加载WebAssembly模块的大多数应用程序,建议使用静态嵌入inNative方法。尽管依赖于平台,但所有平台都必须:

1、下载或安装SDK。

2、链接到inNative静态库

3、将include/innative头文件添加到项目

4、包含inNative Deflt Envinment静态库

静态库不能包含其他静态库,因此您需要将其包含innative.lib在正在构建的根可执行文件或DLL中。因为您是静态嵌入库,所以您可以访问外部API中列出的所有静态函数。

Windows

静态库:innative.lib和innative-d.lib

默认环境:innative-env.lib和innative-env-d.lib

将静态库添加到项目的其他依赖项(对于Visual Studio)或构建系统的等效项。将默认环境库放在/bin/文件夹中,并确保将其随应用程序一起分发。

创建自定义环境

nNative嵌入环境实际上只是标准C库,它们将C函数公开给正在使用其进行编译的WebAssembly模块。但是,inNative还支持通过基于名称处理规则导出专门命名的函数来创建公开与WebAssembly兼容的函数的C库。

导出C函数

编译一个静态(或共享)库,该库将要公开的C函数导出到WebAssembly模块。如果您使用的是C ++,请确保使用extern "C"来防止任何C ++名称修改。,只需在引用库的同时编译WebAssembly模块即可。

Windows示例

./innative-cmd.exe your_module.wasm -l your_library.lib

因为Windows会.lib为DLL生成文件,所以您应该为DLL或静态库执行此作。

Linux示例

./innative-cmd your_module.wasm -l your_library.a

或者

./innative-cmd your_module.wasm -L your_shared_library

Linux有一个特殊的-L选项,告诉它链接到应该使用的共享库。请记住,在上面的示例中,实际文件名为libyour_shared_library.so,这是链接程序将在当前路径中查找的名称。有时,链接程序可能对库路径有些挑剔,在这种情况下,您可能想指定整个绝对路径。

如果已按照上述说明进行作,则现在可以使用基本的C导入方法来导入C函数:

(import “ ” “ your_function ”(func $ yourfunc(result i32)))

使用标准的C调用约定通常是一个好主意,但是对于C函数,您还可以使用其他调用约定

导出WebAssembly函数

也可以创建一个公开WebAssembly函数的库,但前提是它们必须遵循严格的规则集。“名称修饰”文章详细介绍了名称修饰如何将模块+函数名称对转换为单个C符号:[module]_WA_[function]。可以相反地进行这种处理,以从C函数声明中获取WebAssembly模块+函数名称对。

再一次,extern "C"如果您使用的是C ++ ,请确保添加。如果使用此功能编译库并将其添加到inNative命令行中,则可以将其导入到WebAssembly模块中,如下所示:

(import “ your_module ” “ your_function ”(func $ functest(param i f f32 i32)(result i)))

但是,有一些限制:函数必须具有默认的C调用约定!如果它使用任何其他调用约定,则该行为是不确定的且不安全的。此外,只能使用5种类型:

当然,您也可以替换uint32_t为int32_t,并uint_t为int_t没有问题。您也可以将任意指针类型替换为void*。但是,void*必须映到i位体系结构,i3232位体系结构,或者cref要使用inNative的cref扩展名。在将C函数签名与WebAssembly等效项进行匹配时,请格外小心,因为签名不匹配会沙箱或使程序完全崩溃。

请记住,WebAssembly函数胜过C函数-如果导出伪装为WebAssembly导入的C函数,但是存在另一个具有相同名称和函数定义的WebAssembly模块,则WebAssembly版本将获胜。在将C函数导出为WebAssembly导入时,请确保为假模块选择唯一的名称。

近期热门

1
UEStudio增强版是 UltraEdit 的开发环境版本,软件功能非常强大,界面简洁明晰、作方便快捷,设计 […]
2
DLL函数查看器是一款易于使用的dll函数查看工具。软件具备了简单直观的用户界面,拖动dll文件到窗口,或者双 […]
3
精易csharp编程助手也就是精易c#编程助手,是一款辅助c#快速开发的工具,主要功能模块包括常用代码、网页提 […]
4
Alactty是一款跨平台的OpenGL终端仿真器,可以通过这款软件快速运行脚本,添加了对Windows的支持 […]
5
VSCodium(VScode二进制版本)免费下载是编程开发分类下一款电脑软件,神奇下载小编给各位带来了VSC […]
6
Dxpress版是一款优秀实用的控件库软件。Dxpress19中文版软件能够帮助用户设计具有图形和高级和高级功 […]
7
Kratos提供非常多的服务框架,可以帮助用户在搭建网站和应用的时候快速配置通讯,配置HTTP服务,配置数据分 […]
8
CDS是一款自动化软件,您可以在软件上建立多种自动化作业方式,有效提升企业工作效率,优化复杂的工作流程,您可以 […]
9
夜神助手全称是夜神模拟器连接助手,因为作者在安卓逆向学习过程中,经常使用夜神模拟器调试程序经常打开很多命令行窗 […]
10
MyBB是一款论坛开发软件,如果你需要设计论坛就可以直接通过这款软件部署到使用,不需要自己原创代码就可以立即创 […]

声明:本站所有软件和文章来自互联网 如有异议 请与本站联系 本站为非赢利性网站 不接受任何赞助 转载需标注!

Copyright © 2018-2023 All Rights Reserved. 神奇下载网站备案编号:苏ICP备12036411号

抵制不良游戏软件,拒绝盗版。 注意自我保护,谨防受骗上当。 适度娱乐益脑,沉迷伤身。合理安排时间,享受健康生活。

共 22 次查询,耗时 0.960 秒