[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/de/docs/WebAssembly/Reference/Definitions/memory [Back]  [Original]

Speicher: Wasm-Definition - WebAssembly | MDN

Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.

View in English Always switch to English

Speicher: Wasm-Definition

Die memory Definition deklariert einen Block aus linearem Speicher in Einheiten von 64KiB-Seiten.

In diesem Artikel

Probieren Sie es aus

(module
  (import "console" "log" (func $log (param i32)))
  (memory $my_mem 1 2) ;; start with one memory page, and max of 2 pages
  (func $main

    ;; grow memory by 1 page
    ;; grow returns 1 for success and -1 for failure
    ;; will fail if you grow to more than 2 pages
    (memory.grow $my_mem (i32.const 1))
    call $log ;; log the result

  )
  (start $main)
)
const url = "{%wasm-url%}";
await WebAssembly.instantiateStreaming(fetch(url), { console });

Syntax

memory name address_type min max
memory

Der Typ der memory-Definition. Muss immer zuerst angegeben werden.

name Optional

Ein optionaler identifizierender Name fr den Speicher. Dieser muss mit einem $-Symbol beginnen, zum Beispiel $meine_speicher. Wird dies weggelassen, kann der Speicher durch seinen Index identifiziert werden, zum Beispiel 0 fr den ersten Speicher im Wasm-Modul, 1 fr den zweiten usw.

address_type Optional

Ein Ganzzahl-Datentyp, der angibt, welchen Adresstyp der Speicher haben wird. Mgliche Werte sind:

i32

Daten werden an 32-Bit-Adressen gespeichert. Zeiger, die zur Identifizierung von Speicheradressen verwendet werden (zum Beispiel beim Speichern oder Laden), werden i32-Werte sein.

i64

Daten werden an 64-Bit-Adressen gespeichert. Zeiger, die zur Identifizierung von Speicheradressen verwendet werden (zum Beispiel beim Speichern oder Laden), werden i64-Werte sein.

Wird dies weggelassen, ist der Standardwert fr address_type i32.

min

Die minimale Anzahl von 64KiB-Seiten im Speicher, was auch die anfngliche Anzahl von Seiten ist.

max Optional

Die maximale Anzahl von 64KiB-Seiten im Speicher.

Beschreibung

WebAssembly-Speicher bietet Roharbeitsspeicher fr Wasm-Module. Die memory-Definition selbst deklariert den Datenspeicher, whrend data-Definitionen verwendet werden knnen, um einen Speicher mit Daten zu initialisieren. Zum Beispiel:

wat
(module
  (memory $my_mem 1 2)
  (data $greeting (memory $my_mem) (i32.const 0) "Hello world")
  ;; ...
)

Jeder Speicher wird als Anzahl von "Seiten" definiert, wobei jede Seite 64KiB (65.536 Bytes) gro ist. Nach dem optionalen identifizierenden Speichernamen definieren die beiden Zahlenwerte die minimale (und anfngliche) Anzahl von Seiten und die maximale Anzahl von Seiten, die der Speicher enthalten kann. Die data-Definition ist ebenfalls benannt und spezifiziert einen Bezeichner, in dem die Daten gespeichert werden sollen. Ein Wasm-Modul kann mehrere Speicher enthalten, die jeweils durch Namen oder Index identifizierbar sind.

Wenn Sie nur einen Speicher in Ihrem Modul haben oder die Daten im ersten Speicher im Modul speichern mchten, knnen Sie den Speichernamen und Bezeichner weglassen, wie folgt:

wat
(module
  (memory 1 2)
  (data $greeting (i32.const 0) "Hello world")
  ;; ...
)

Standardmig werden die Daten in Speicher 0 geschrieben.

Sobald ein memory erstellt wurde, stehen mehrere Speicheranweisungen zur Manipulation zur Verfgung. Weitere Einzelheiten zur Verwendung von Wasm-Speichern finden Sie in WebAssembly-Speicher.

Manipulation von Wasm-Speichern aus JavaScript

WebAssembly-Speicher knnen aus einem Wasm-Modul exportiert werden:

wat
(module
  (memory (export "memory") 1)
  (data $greeting (i32.const 0) "Hello world")
  ;; ...
)

Im JavaScript-Host sind sie dann im entsprechenden exports-Objekt verfgbar, zum Beispiel:

js
WebAssembly.instantiateStreaming(fetch("module.wasm")).then((result) => {
  const mem = result.instance.exports.memory;
  // ...
});

Der Speicher wird durch eine JavaScript-Instanz des WebAssembly.Memory-Objekts reprsentiert, die mit typisierten Array-Objekten oder DataView-Objekten betrachtet und modifiziert werden kann. Siehe memory.init fr ein Beispiel.

Sie knnen auch einen neuen memory mithilfe des JavaScript-Konstruktors WebAssembly.Memory() erstellen und in ein Wasm-Modul importieren.

Spezifikationen

Diese Funktion scheint in keiner Spezifikation definiert zu sein.

Browser-Kompatibilitt

Siehe auch


Web Proxy Viewer  |  New URL  |  Original Page