i64: Wasm-Werttyp
Der i64-Werttyp hält einen 64-Bit-Integer.
Syntax
;; Function returning an i64 constant
(func (result i64)
i64.const 9000000000
)
;; i64 parameter and local
(func (param $p i64) (local $tmp i64)
;; ...
)
;; Mutable i64 global
(global $count (mut i64) (i64.const 0))
Beschreibung
i64-Werte sind 64 Bit breit und sind nicht von Natur aus vorzeichenbehaftet oder vorzeichenlos. Jede Anweisung wählt ihre Interpretation: Vorzeichenbehaftete Varianten wie i64.div_s behandeln Operanden als Zweierkomplement, während vorzeichenlose Varianten wie i64.div_u dies nicht tun. Operationen, deren Ergebnis nicht von der Vorzeichenbehaftung beeinflusst wird, wie Addition, Subtraktion, Multiplikation und bitweise Operationen, haben eine einzige Anweisung.
i64 ist transparent: Sein Bitmuster ist erkennbar, und i64-Werte können im linearen Speicher gespeichert werden.
JavaScript-Grenze
Der Number-Typ von JavaScript kann den vollständigen i64-Bereich nicht verlustfrei darstellen, daher überqueren i64-Werte die JavaScript-Grenze als BigInt. Außerhalb des Bereichs liegende BigInts werden modulo 2⁶⁴ umbrochen. Das Übergeben einer einfachen Number, wenn ein i64 erwartet wird, löst einen TypeError aus.
Spezifikationen
| Spezifikation |
|---|
| Unknown specification> # syntax-numtype> |