首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >引擎应该如何评估这段ASM.js代码?

引擎应该如何评估这段ASM.js代码?
EN

Stack Overflow用户
提问于 2020-08-12 17:12:04
回答 1查看 49关注 0票数 1

根据规范,ASM.js中的"int“类型没有符号性。

,int类型是32位整数的类型,在这种类型中,签名性是未知的.在asm.js中,变量的类型从来没有已知的符号性。这允许将它们编译为32位整数寄存器和内存单词.但是,这种表示会在有符号数字和无符号数字之间造成重叠,从而导致在确定它们所代表的JavaScript数字时出现歧义。例如,位模式0 0xffffffff可以表示4294967295或-1,这取决于签名的程度。因此,int类型的值不允许转义到外部(非asm.js) JavaScript代码中。

那么引擎如何评估下面的ASM.js代码呢?如果参数x和y有不同的签署性,则结果可能不同。我们如何为它生成AOT代码?

代码语言:javascript
复制
function foo(start, end) {
  start = start|0;  // start is int.
  end = end|0;  // start is int.

  return +((end - start)|0);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-17 16:31:40

|0将转换为有符号整数。因此,该函数中的所有值和操作都进行了签名。

(然而,对于减法,这个符号无论如何都不重要-它是一个用于有符号或无符号的CPU指令,参见How the value of type "i32" is evaluated in WebAssembly?)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63381584

复制
相关文章

相似问题

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