WebAssembly имеет только четыре типа значений:
i32
- 32-разрядные целые числа f32
- 32-разрядные числа с плавающей запятой i64
- 64-разрядные целые числа f64
- 64-разрядные числа с плавающей запятой
Каждый имеет свой собственный набор кодов операций, представляющих арифметические операции, например, i32.add
, i64.add
, f32.add
и f64.add
. Существуют также коды операций для упаковки более узких целых чисел в более широкие типы, например int32.store_8
, int64.load32_u
. WebAssembly v1 определяет ~ 170 кодов операций, из которых ~ 70 специально для 32-битных чисел и ~ 75 для 64-битных.
Мне кажется, что отказ от поддержки 32-битных чисел почти вдвое уменьшит количество кодов операций без потери функциональности. Что заставляет меня задуматься: какая польза от обоих?
Есть некоторые обсуждения вокруг этого на GitHub, но онислишком технически для меня.