2015-09-19 1 views
4

J'ai entendu que W3 travaille sur le code de byte du web, Est-ce que web assembly (wasm) aura sa propre syntaxe comme nasm et masm? par exemple taper des choses comme,L'assemblage web (wasm) aura-t-il sa propre syntaxe?

global _main 
extern [email protected] 
extern [email protected] 

section code use32 class=code 
_main: 
    push dword 0  ; UINT uType = MB_OK 
    push dword title ; LPCSTR lpCaption 
    push dword banner ; LPCSTR lpText 
    push dword 0  ; HWND hWnd = NULL 
    call [email protected] 

    push dword 0  ; UINT uExitCode 
    call [email protected] 

section data use32 class=data 
    banner: db 'Hello, world!', 0 
    title: db 'Hello', 0 

dans nasm pour les fenêtres

ou si ce sera seulement créé d'être compilée à partir de C/C++ et d'autres langues?

+0

Ce n'est pas vraiment un assemblage, c'est un AST sérialisé. Ne ressemblera pas à ça. – harold

Répondre

10

Le prototype actuel de WebAssembly already has a syntax qui est également émis par the LLVM backend (les CHECK: parties de ces tests), utilisés par the WAVM backend. Voir également ilwasm et WABT.

Est-ce la syntaxe textuelle officielle? Non, mais il peut devenir officiel plus tard (mise à jour de mars 2017: cela est susceptible de happen soon).

Le format binaire WebAssembly actuel est un stack machine, ce qui représente un changement significatif par rapport à l'approche AST initiale adoptée par WebAssembly. Les s-expressions ne sont pas intrinsèquement mieux adaptées pour représenter des machines de pile, mais elles sont assez bonnes, simples, et évitent les bikeshed sans fin.


réponse originale:

Il a la propriété importante pour WebAssembly d'être représentée comme s-expressions qui ont par nature un arbre d'expression , qui sont un élément clé the AST's design. Il a également un flux de contrôle structuré (un AST) au lieu de ce que la plupart des IR du compilateur ont (un CFG).

Existe-t-il une autre syntaxe prototype? Oui! The wassembler qui travaille en étroite collaboration avec le V8 prototype a une syntaxe entièrement différente.

Pourquoi une autre syntaxe que s-expressions? Une syntaxe de type C est plus familière à la plupart des développeurs! Ce n'est pas aussi proche de ce que le format binaire contiendrait, mais c'est quand même assez proche et plus agréable à utiliser.

Pourquoi est-ce si compliqué? Il est utile de lire la description text format pour comprendre. Le travail est toujours en cours, et au final, la partie importante de WebAssembly est le format binaire: c'est ce que tous les outils vont échanger, et ce que les navigateurs vont consommer. Pourquoi même travailler sur un format texte, alors? Nous sommes des ingénieurs et il nous est plus facile de consommer du texte. Nous sommes en train de le changer plus tard, l'objectif principal du format texte est la compréhension humaine et nous aurons besoin de plus d'humains pour savoir si le texte que nous avons créé est compréhensible.

0

La représentation textuelle de W ebA s s e m Bly (wasm) similaire à celui-asm.js. Le GitHub officiel FAQ couvre vos questions:

En fait, en laissant tomber toutes les coercitions requises par la validation des asm.js, le format texte WebAssembly devrait être beaucoup plus naturel à lire et à écrire que asm.js. En dehors du navigateur, les outils de ligne de commande et en ligne qui convertissent entre le texte et le binaire seront également facilement disponibles.

[...]

Comme WebAssembly évolue, il soutiendra plus de langues que C/C++, et nous espérons que d'autres compilateurs soutiendront aussi bien, même pour les C/C++ langue, par exemple GCC.

+4

Nous n'avons pas vraiment discuté de la syntaxe ressemblant à asm.js. Cela pourrait être le cas, mais le but de la syntaxe textuelle est la consommation humaine alors que le hack mignon d'asm.js pour ajouter des types statiques à JavaScript n'est pas particulièrement humain! Une syntaxe lisible, avec des types explicites, est beaucoup plus agréable. –