小编JF *_*ien的帖子

如何从WebAssembly函数返回JavaScript字符串

如何从WebAssembly函数返回JavaScript字符串?

以下模块可以用C(++)编写吗?

export function foo() {
  return 'Hello World!';
}
Run Code Online (Sandbox Code Playgroud)

另外:我可以将它传递给JS引擎进行垃圾回收吗?

javascript webassembly

32
推荐指数
3
解决办法
1万
查看次数

生锈,WebAssembly和传递参数以增加总内存

我有一个生锈的项目,我正在编写webasm每http://asquera.de/blog/2017-04-10/the-path-to-rust-on-the-web/

项目编译.当我在Chrome Canary中运行它时,内存不足并给我一个非常有用的错误消息:

abort("Cannot enlarge memory arrays. Either (1) compile with  -s 
TOTAL_MEMORY=X  with X higher than the current value 16777216, (2) compile 
with  -s ALLOW_MEMORY_GROWTH=1  which allows increasing the size at runtime, 
...
Run Code Online (Sandbox Code Playgroud)

问题是,它不清楚如何将这些标志传递给rustc /构建工具链.

既未设置EMMAKEN_CFLAGS,也未设置以下工作:

cargo  rustc -v --target=wasm32-unknown-emscripten --release -- -Clink-args="-s TOTAL_MEMORY=33554432" 
Run Code Online (Sandbox Code Playgroud)

rust asm.js webassembly

7
推荐指数
1
解决办法
521
查看次数

asm.js如何处理除零?

在javascript中,使用"整数"参数除零就像浮点一样:

 1/0;    // Infinity
-1/0;    // -Infinity
 0/0;    // NaN
Run Code Online (Sandbox Code Playgroud)

asm.js规范说,返回带有整数参数的除法intish,必须立即强制转换为有符号或无符号.如果我们在javascript中执行此操作,则使用"整数"参数除零始终在coersion后返回零:

(1/0)|0;    // == 0, signed case.
(1/0) >> 0; // == 0, unsigned case.
Run Code Online (Sandbox Code Playgroud)

但是,在具有Java和C等实际整数类型的语言中,将整数除以零是一个错误,执行会以某种方式停止(例如,抛出异常,触发陷阱等).

这似乎也违反了asm.js指定的类型签名.的类型的InfinityNaNdouble/是假想(从规格):

(签名,签名)→intish∧(无符号,无符号)→intish∧(double?,double?)→double∧(float?,float?)→floatish

但是,如果其中任何一个具有零分母,结果是double,所以看起来类型只能是:

(双?,双?)→双

在asm.js代码中会发生什么?它是否遵循javascript并返回0或除零产生运行时错误?如果它遵循javascript,为什么键入错误是正确的?如果它产生运行时错误,为什么规范没有提到呢?

javascript asm.js

6
推荐指数
1
解决办法
544
查看次数

从 WebAssembly .wasm 模块获取 JavaScript 导入对象条目

我想了解 Rust 程序在编译为 wasm 文件时实际导出的内容,以便我可以importObject为实例化函数提供有效的值:

WebAssembly.instantiate(bufferSource, importObject);
Run Code Online (Sandbox Code Playgroud)

据我了解,执行此操作的唯一方法是导出已编译代码的类似 s 语法的文件。我无法在他们的文档中或通过网络搜索找到如何执行此操作。

rust emscripten webassembly

5
推荐指数
1
解决办法
1886
查看次数

如何在WebAssembly中使用`indirect_call`?

没有使用indirect_call在线可用的示例。根据语义文档,我尝试了

(call_indirect 
    (i32.const 0)
    (i32.const 0)
    )
Run Code Online (Sandbox Code Playgroud)

数字是随机的,但是没有给出我期望的运行时错误。我正在解析错误。

正确的语法是call_indirect什么?

webassembly

5
推荐指数
1
解决办法
814
查看次数

如何从js访问WebAssembly中的编译内存

考虑以下C++:

int MYVAR = 8;
Run Code Online (Sandbox Code Playgroud)

它将从Clang/LLVM编译到插入下面操场的WASM字节码.

为了便于阅读:

(module
(table (;0;) 0 anyfunc)
(memory (;0;) 1)
(global (;0;) i32 (i32.const 0))
(export "MYVAR" (global 0))
(data (i32.const 0) "\08\00\00\00"))
Run Code Online (Sandbox Code Playgroud)

当从js调用时,MYVAR将公开指向变量的指针.

但是如何使用新的js API访问实际内存?

内存构造函数似乎在初始化时删除了条目,但我不确定我是否正确地解释了这一点.

作为旁注,模块没有规范中指定的exports属性,但这也可能是一种误解.

操场:

<!doctype html>
<html>

<head>
<meta charset="utf-8">
<title>MEMORY ACCESS TEST</title>
</head> 
<div>
<h1 style="display: inline;">MEMORY LOCATION : </h1>
<h1 id='POINTER' style="display: inline;"></h1>
</div> 
<div>
<h1 style="display: inline;">VALUE : </h1>
<h1 id='VALUE' style="display: inline;"></h1>
</div>
<body>
<script>
 var bytecode = new Uint8Array([
 0x00, 0x61, …
Run Code Online (Sandbox Code Playgroud)

javascript c++ webassembly

5
推荐指数
1
解决办法
543
查看次数

如何在 WebAssembly 中创建和引用表?

有人可以分享一下静态创建具有某些元素的表并引用它的语法吗?我找不到任何这样做的网络汇编代码。

还有一些细节,例如我可以有多个列,如果索引不在表中会发生什么等,会有帮助吗?

webassembly

3
推荐指数
1
解决办法
1793
查看次数

C 数组中可以使用迭代器吗?

我知道iterator可以用于vectorwithstd::vector::begin或 withstd::begin中定义的<iterator>。对于 也一样std::end。我还可以将迭代器与 C 数组一起使用吗?我尝试了以下方法,但没有成功。

#include <iostream>
#include <iterator>

using std::cin;
using std::cout;
using std::endl;
using std::begin;
using std::end;

void print(const int *arr) {
    for (auto cbeg = cbegin(arr); cbeg != cend(arr); ++cbeg) {
        cout << *cbeg << endl;
    }
}

int main() {
    int arr[] = {9, 18, 31, 40, 42};
    print(arr);
}
Run Code Online (Sandbox Code Playgroud)

编辑:

我认为我可以做到这一点,因为他们在 C++ 入门中使用了这段代码begin,并end让迭代器到达第一个和最后一个元素:

#include <iterator>
using std::begin; using std::end; …
Run Code Online (Sandbox Code Playgroud)

c++ arrays

1
推荐指数
1
解决办法
1万
查看次数

计算汽车节点VEINS之间的距离

我是VEINS的新手,正在尝试在MyVeinsApp.cc中实现加权p持久性。该公式中使用了发送节点和接收节点之间的距离。我看到了下面的两个功能。

virtual Coord& getSenderPos();
virtual const Coord& getSenderPos() const {return const_cast<WaveShortMessage*>(this)->getSenderPos();}
Run Code Online (Sandbox Code Playgroud)

我应该使用其中一种方法来计算节点之间的距离吗?

请建议最好的方法。

c++ simulation omnet++ veins sumo

0
推荐指数
1
解决办法
769
查看次数

标签 统计

webassembly ×6

c++ ×3

javascript ×3

asm.js ×2

rust ×2

arrays ×1

emscripten ×1

omnet++ ×1

simulation ×1

sumo ×1

veins ×1