首页 > 解决方案 > 在 WebAssembly 中同时拥有 32 位和 64 位数字的基本原理是什么?

问题描述

WebAssembly 只有四种值类型:

每个都有自己的一组表示算术运算的操作码,例如i32.add、和。还有一些操作码用于将较窄的整数包装成较宽的类型,例如. WebAssembly v1 定义了约 170 个操作码,其中约 70 个专门用于 32 位数字,约 75 个用于 64 位。i64.addf32.addf64.addint32.store_8int64.load32_u

在我看来,放弃对 32 位数字的支持将使操作码的数量几乎减半,而不会损失任何功能。这让我想知道:两者兼有有什么好处?

在 GitHub 上有一些 关于这个的讨论,但对我来说它们有点太技术性了。

标签: 32bit-64bitwebassembly

解决方案


它们存在的原因与许多编程语言支持不同精度的数字的原因大致相同 - 较低精度的数字需要更少的存储空间,并且应用于这些数字的操作可能比更高精度的数字更快。

此外,按照建议减少 WebAssembly 中的操作码数量不会产生任何切实的好处。他们总是使用单个字节进行存储。


推荐阅读