| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/WebAssembly/Reference/Numeric/lt | [Back] [Original] |
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.
Die lt numerische Anweisung, kurz fr less than, prft, ob eine Gleitkommazahl kleiner ist als eine andere Gleitkommazahl.
Ganzzahltypen haben separate signierte (signed) (lt_s) und unsignierte (unsigned) (lt_u) Anweisungen.
(module
(import "env" "log_bool" (func $log_bool (param i32)))
(func $main
;; load 10.1 and 3.5 onto the stack
f32.const 10.1
f32.const 3.5
f32.lt ;; check if 10.1 is less than 3.5
call $log_bool ;; log the result
)
(start $main)
)
const url = "{%wasm-url%}";
function log_bool(value) {
console.log(Boolean(value));
// Expected output: false
}
await WebAssembly.instantiateStreaming(fetch(url), {
env: { log_bool },
});
value_type.lt
value_typeDer Typ des Wertes, auf dem die Anweisung ausgefhrt wird. Die folgenden Typen untersttzen lt:
f32f64v128 Interpretationen:
f32x4f64x2ltDie lt-Anweisung. Muss immer nach dem value_type und einem Punkt (.) angegeben werden.
[input1, input2] -> [output]
input1Der erste Eingabewert.
input2Der zweite Eingabewert.
outputDer Ausgabewert, der ein Ganzzahltyp sein wird.
Fr ein nicht-SIMD lt sind die Eingaben grundlegende numerische Werte wie 3.0 oder 3.5. Wenn die erste Eingabe kleiner als die zweite Eingabe ist, wird 1 auf den Stack als Ausgabe geschoben, andernfalls 0.
Fr ein SIMD lt sind die Eingaben v128 Werteinterpretationen, zum Beispiel f32x4 2.0 30 86.9 120. Jede Lane der Ausgabe, die auf den Stack geschoben wird, ist eine 1 oder 0, die angibt, ob die entsprechende Lane des ersten Eingabewertes kleiner ist als die entsprechende Lane des zweiten Eingabewertes.
| Anweisung | Binrformat | Beispieltext => binr |
|---|---|---|
f32.lt |
0x5d |
f32.lt => 0x5d |
f64.lt |
0x63 |
f64.lt => 0x63 |
f32x4.lt |
0xfd 67:u32 |
f32x4.lt => 0xfd 0x43 |
f64x2.lt |
0xfd 73:u32 |
f64x2.lt => 0xfd 0x49 |
lt BeispielIn diesem Beispiel demonstrieren wir die Verwendung von lt, um zu testen, ob ein SIMD-Lane-Wert geringer ist als derselbe Lane-Wert in einem anderen SIMD-Wert.
In unserem Skript holen wir eine Referenz zu einem <p>-Element, um unser Ergebnis auszugeben, dann definieren wir ein Objekt fr den Import in Wasm, das eine einzelne Funktion enthlt, die einen Wert in das Ausgabe-<p> schreibt. Wir kompilieren und instanziieren dann unser Wasm-Modul mit der Methode WebAssembly.instantiateStreaming(), wobei wir das Objekt importieren.
<p></p>
const outputElem = document.querySelector("p");
const obj = {
output(val) {
outputElem.textContent += val;
},
};
WebAssembly.instantiateStreaming(fetch("{%wasm-url%}"), {
obj,
});
In unserem Wasm-Modul importieren wir zunchst die JavaScript-Funktion output(), wobei wir sicherstellen, dass sie einen i32-Parameter deklariert. Wir deklarieren dann zwei SIMD f32x4-Werte und prfen, ob die Lane-Werte des ersten kleiner sind als die des zweiten mit f32x4.lt. Schlielich extrahieren wir den Wert, der in Lane 3 des Ausgabewertes gespeichert ist, mit der extract_lane Anweisung und geben ihn an den DOM aus, indem wir die importierte output()-Funktion aufrufen.
(module
;; Import output function
(import "obj" "output" (func $output (param i32)))
(func $main
;; load two SIMD values onto the stack
v128.const f32x4 20 12 15 102
v128.const f32x4 20 12 15 100
;; check whether the first value is less than the second
f32x4.lt
i32x4.extract_lane 3 ;; Extract a value from the result
call $output
)
(start $main)
)
Die Ausgabe ist wie folgt:
Das Ergebnis ist 0, weil der in Lane 3 des ersten Eingabewertes gespeicherte Wert nicht kleiner ist als der in Lane 3 des zweiten Eingabewertes gespeicherte Wert.
| Spezifikation |
|---|
| WebAssembly Core Specification # numeric-instructions%E2%91%A8 |
Der Bauplan fr ein besseres Internet.
Teile dieses Inhalts sind 19982026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfgbar unter einer Creative-Commons-Lizenz.
| Web Proxy Viewer | New URL | Original Page |