首页 > 解决方案 > 为什么 ASM.js 没有未签名的注释?

问题描述

如题,

从规范来看,我似乎可以确保值 (x) 只能通过以下方式评估为无符号:x >>> 0. 但据我所知,这里的“ >>> ”应该是一个运算符而不是注释。那么,为什么 ASM.js 没有 unsigned 的注解呢?

http://asmjs.org/spec/latest/#annotations

此外,众所周知,在 C 和 C++ 等编程语言中,默认类型“int”应该是有符号的,但为什么相同类型的“int”在 ASM.js 中没有符号呢?

规格说明如下,但我不太明白这一点。

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

标签: emscriptenasm.js

解决方案


推荐阅读