WebAssemby jest czymś najnowszym i największym, który konwertuje kod c / c ++ w formacie binarnym.
- WebAssembly ma działać z szybkością natywną, korzystając ze wspólnego sprzętu. Zaprojektowano go do integracji z platformą internetową.
Oto link, w którym można zobaczyć jedną z aplikacji, jak szybko konwertuje prosty program czynnikowy w kodzie maszynowym.
Sprawdź tę bestię https://godbolt.org/
Możesz użyć tego przykładowego programu do uruchomienia w tej witrynie, aby zobaczyć zespół.
# include<stdio.h>
int square(int num) {
return num * num;
}
int main() {
int res = square(4);
printf("%d\n",res);
return 0;
}
- Zdefiniuj przenośny, binarny format oszczędzający czas i ładowanie, który będzie służył jako cel kompilacji, który można skompilować w celu wykonania z natywną szybkością, korzystając ze wspólnych możliwości sprzętowych dostępnych na wielu platformach, w tym na urządzeniach mobilnych i IoT.
Kilka podstawowych informacji na temat hosta i celu, jak język programowania jest tłumaczony na 10101010.
host=>pc :(windows, iOS, Linux, zOS, Solaris..etc)
target=>CPUhardware: (Intel x86, ARM, PowerPC, etc)
GCC przekształca kod C / C ++ w kod asemblera. Narzędzie o nazwie „asembler” konwertuje kod asemblera na kod maszynowy, a narzędzie o nazwie „linker” łączy wiele plików kodu maszynowego w jeden plik wykonywalny (.EXE w systemie Windows). Większość tych kompilatorów pozwala na zapisanie wynikowego kodu asemblera w pliku, dzięki czemu można obejrzeć kod asemblera lub go zmodyfikować.
Asembler i linker są częścią łańcucha narzędzi, co oznacza, że zazwyczaj są dostarczane razem z kompilatorem.
Niektóre kompilatory (jak Microsoft) jednak bezpośrednio konwertują kod C / C ++ na język maszynowy, więc nie jest już potrzebny asembler. Wiele z tych kompilatorów nie jest w stanie utworzyć kodu asemblera, więc nie można zapisać kodu asemblera w pliku.
Nawiasem mówiąc: istnieją nawet kompilatory (nie dla C / C ++, ale dla innych języków programowania), które bezpośrednio tworzą plik .EXE, więc nie jest wymagany linker.
WebAssembly: https://github.com/WebAssembly/design