Une technologie qui vous permet d'exécuter des langages d'assemblage à partir de votre navigateur. Il est utilisé dans le but d'accélérer ou de faire quelque chose que le système de traitement JavaScript ne peut pas faire.
En juin 2015, Mozilla, Google, Microsoft et Apple ont accepté de le développer en tant que format standard.
Les langages pris en charge sont C / C ++, Rust, etc. Récemment, Golang peut également être utilisé.
Actuellement pris en charge par la plupart des navigateurs autres que IE.
À titre d'exemple, jetons un coup d'œil à un programme Hello World écrit en C ++ en langage assembleur.
hello.cpp
#include <iostream>
using namespace std;
int main() {
cout << "Hello World!" << endl;
return 0;
}
Vous pouvez voir le langage d'assemblage en ajoutant l'option S à g ++.
$ g++ -S hello.cpp
Générera un fichier assembleur appelé hello.s.
Puisque le fichier aura plus de 1000 lignes, je ne mettrai que les 15 premières lignes ici.
.section __TEXT,__text,regular,pure_instructions
.macosx_version_min 10, 13
.globl _main ## -- Begin function main
.p2align 4, 0x90
_main: ## @main
.cfi_startproc
## %bb.0:
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset %rbp, -16
movq %rsp, %rbp
.cfi_def_cfa_register %rbp
subq $32, %rsp
movq __ZNSt3__14coutE@GOTPCREL(%rip), %rdi
leaq L_.str(%rip), %rsi
Voici le problème principal.
Présentation de l'Emscripten le plus populaire.
git clone https://github.com/juj/emsdk.git
cd emsdk
#Installez les derniers outils SDK
./emsdk install latest
#Activer
./emsdk activate latest
#Définir les variables de chemin et d'environnement
source ./emsdk_env.sh
Cela prend beaucoup de temps, alors je bois du thé.
Maintenant que vous avez un environnement de construction, compilez-le et exécutez-le.
hello.c
#include <stdio.h>
int main() {
printf("Hello World!\n");
return 0;
}
$ emcc -0 hello.js -O0 hello.c
$ node hello.js
Hello World!
$ emcc -o index.html hello.c
#Configurer un serveur local
## Python3.série x
$ python -m http.server
Serving HTTP on 0.0.0.0 port 8000 ...
## Python2.série x
$ python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...
Lorsque vous accédez à http: // localhost: 8000 /,
Hello World! S'affiche correctement.
Cette fois, j'ai essayé Hello World avec Web Assembly.
Si vous en avez envie, essayez un traitement arithmétique plus compliqué.
c'est tout!
Recommended Posts