mul_wide_s: Wasm numerische Anweisung
Die mul_wide_s numerische Anweisung multipliziert zwei vorzeichenbehaftete 64-Bit-Ganzzahlen, um ein vorzeichenbehaftetes 128-Bit-Ergebnis zu erzeugen, das durch zwei 64-Bit-Ganzzahlen dargestellt wird.
Probieren Sie es aus
(module
(import "console" "log" (func $log (param i64)))
(func $main
i64.const 123456789012345
i64.const 123456789070
i64.mul_wide_s
call $log ;; log high 64 bits
call $log ;; log low 64 bits
)
(start $main)
)
const url = "{%wasm-url%}";
await WebAssembly.instantiateStreaming(fetch(url), { console });
WAT-Syntax
i64.mul_wide_s
i64.mul_wide_s-
Die
i64.mul_wide_s-Anweisung.
Unmittelbare
Keine.
Operandenstapel
[input1:i64 input2:i64] -> [low_output:i64 high_output:i64]
input1-
Die erste
i64-Eingabe. input2-
Die zweite
i64-Eingabe. low_output-
Ein
i64, das die unteren 64 Bits des Ergebnisses darstellt. high_output-
Ein
i64, das die oberen 64 Bits des Ergebnisses darstellt.
Binäre Codierung
| Anweisung | Binäres Format | Beispieltext => binär |
|---|---|---|
i64.mul_wide_s |
0xfc 21:u32 |
i64.mul_wide_s => 0xfc 0x15 |
Beschreibung
Die mul_wide_s-Anweisung multipliziert zwei vorzeichenbehaftete i64-Werte, um ein vorzeichenbehaftetes 128-Bit-Ergebnis zu erzeugen, das durch ein Paar von i64-Werten dargestellt wird.
Dies ist eine der weiten arithmetischen Operationen, die in Situationen nützlich sind, in denen größere als 64-Bit-Zahlen in Quellsprachen verwendet werden, wenn Wasm als Kompilierungsziel dient. Ein solches Beispiel sind kryptografische Algorithmen.
Diese Methoden ermöglichen es den Engines, performanteren Maschinencode für diese Operationen zu erzeugen, als es mit i64-arithmetischen Operationen möglich ist.
Spezifikationen
| Spezifikation |
|---|
| Unknown specification> # :~:text=i64%2Emul%5Fwide%5Fs> |