WebAssemby ist etwas Neuestes und Größtes, das den c / c ++ - Code in ein Binärformat konvertiert.
- WebAssembly soll mit nativer Geschwindigkeit ausgeführt werden, indem die gemeinsame Hardware genutzt wird. Es wurde für die Integration in die Webplattform entwickelt.
Hier ist der Link, wo eine der Anwendungen sehen kann, wie schnell sie das einfache Fakultätsprogramm in Maschinencode umwandelt.
Überprüfen Sie dieses Biest, https://godbolt.org/
Mit diesem Beispielprogramm können Sie auf dieser Site die Assembly anzeigen.
# include<stdio.h>
int square(int num) {
return num * num;
}
int main() {
int res = square(4);
printf("%d\n",res);
return 0;
}
- Definieren Sie ein portables, größen- und Ladezeit-effizientes Binärformat als Kompilierungsziel, das kompiliert werden kann, um mit nativer Geschwindigkeit ausgeführt zu werden, indem Sie die allgemeinen Hardwarefunktionen nutzen, die auf einer Vielzahl von Plattformen verfügbar sind, einschließlich mobiler und IoT.
Einige grundlegende Informationen zu Host und Ziel, wie die Programmiersprache in 10101010 übersetzt wird.
host=>pc :(windows, iOS, Linux, zOS, Solaris..etc)
target=>CPUhardware: (Intel x86, ARM, PowerPC, etc)
GCC konvertiert den C / C ++ - Code in Assembler-Code. Ein Tool namens "Assembler" konvertiert den Assemblycode in Maschinencode und ein Tool namens "Linker" verbindet mehrere Maschinencodedateien zu einer einzigen ausführbaren Datei (.EXE unter Windows). Mit den meisten dieser Compiler können Sie den resultierenden Assembler-Code in eine Datei schreiben, um den Assembler-Code anzuzeigen oder zu ändern.
Der Assembler und der Linker sind Teil der Toolkette, was bedeutet, dass sie normalerweise zusammen mit dem Compiler ausgeliefert werden.
Einige Compiler (wie Microsoft) konvertieren jedoch C / C ++ - Code direkt in Maschinensprache, sodass kein Assembler mehr benötigt wird. Viele dieser Compiler können keinen Assembler-Code erstellen, sodass Sie den Assembler-Code nicht in eine Datei schreiben können.
Übrigens: Es gibt sogar Compiler (nicht für C / C ++, sondern für andere Programmiersprachen), die direkt eine .EXE-Datei erstellen, sodass kein Linker erforderlich ist.
WebAssembly: https://github.com/WebAssembly/design