Die von Mozilla am 11. April 2018 veröffentlichte Online-Entwicklungsumgebung von WebAssembly (https://webassembly.studio/) wurde veröffentlicht. Weitere Informationen zu WebAssembly finden Sie auf anderen Websites.
Um die C-Sprache zu verwenden, klicken Sie auf "C-Projekt leeren", um den Code zu schreiben und auszuführen.
Selbst wenn ich versuche, ein Bild zu zeichnen, funktioniert die Übertragung des Arrays nicht. Es scheint, dass nur numerische Typen zwischen WebAssembly und JavaScript übergeben werden können. Sie können Zeiger übergeben, aber es scheint nicht zu funktionieren. Wenn ich die Erklärungen anderer Sites lese, heißt es, was ist mit dem linearen Speicher, aber es gibt nur wenige Sites, die es richtig erklären.
Kurz gesagt, es gibt einen Speicher, der von WebAssembly und JavaScript gemeinsam genutzt wird, und Daten werden dort abgelegt und ausgetauscht.
Viele C-Funktionen funktionieren jedoch in einer einfachen WebAssembly nicht ordnungsgemäß. Funktionen, die Systemaufrufe wie printf und malloc verwenden, scheinen nicht richtig zu funktionieren.
Wenn ich versuche, mit WebAssembly malloc zu googeln, heißt es, dass ich eine riesige Bibliothek verknüpfen möchte, aber es ist keine solche Entwicklungsumgebung und es ist problematisch, daher werde ich nach einer anderen Methode suchen.
Das Projekt von "Hello World in C" wird umgeleitet.
In dieser Vorlage ist der bei Verwendung von malloc erforderliche Systemaufruf mMap2 in JavaScript implementiert. Es ist einfach, wenn Sie es so verwenden, wie es ist, und die Größe ist klein.
Sie können die Struktur übergeben, aber es scheint schwierig zu sein, nach innen zu schauen (ich werde es schreiben, wenn ich weiß, wie man die Art der Struktur übergibt).
Sobald Sie diesen Code auf der WebAssembly-Seite implementiert haben, können Sie tun, was Sie wollen. (WASM_EXPORT ist ein Makro, das in WebAssembly Studio automatisch definiert wird. Es kann nur über JavaScript aufgerufen werden, wenn es vor der Funktion steht.)
#include<stdlib.h>
WASM_EXPORT
void * wballoc (int bytes) {
void * p=malloc(bytes);
return p;
}
WASM_EXPORT
void wbfree(void *pointer) {
free(pointer);
}
Rufen Sie es von der JavaScript-Seite wie folgt auf.
var size =10000;
var p = instance.exports.wballoc(size);
/*
(Folgendes wird weggelassen)
*/
instance.exports.wbfree(p);
Die aktuelle Version (β vom 17. April 2018) von WebAssembly Studio sucht nach WebAssenbly-Fehlern, kennt jedoch keine JavaScript-Fehler. Wenn es nicht funktioniert, gibt es viele Fehler in JavaScript, so dass es schneller erscheint, den Debugger des Browsers zu betrachten. Sie können das Verhalten von WebAssembly auch im FireFox-Debugger anzeigen.
Anstatt JavaScript durch WebAssembly zu ersetzen, scheint der Mechanismus für die Implementierung einer Hochgeschwindigkeitsbibliothek für JavaScript viele Verwendungszwecke zu haben.
Recommended Posts