TIES448 Luento 7
Livekoodataan ensin tulkki
WebAssembly
- välikieli, joka on tarkoitettu selaimessa edelleen käännettäväksi
- suunniteltu
- C-sukuisten kielten kääntämisen kohteeksi
- lineaarinen tavumuisti
- soveltuu toki myös muillekin lähdekielille
- ei automaattista muistinsiivousta (vielä)
- kääntäjälle helpoksi kohdekieleksi
- tehokkaasti suoritettavaksi nykykoneissa
- C-sukuisten kielten kääntämisen kohteeksi
- suoritetaan samassa virtuaalikoneessa kuin JavaScript
- nykyversiolla ei tosin ole suoraa pääsyä selaimen API'eihin
Hello, World! (emcc)
- Asennetaan emscripten
- Käännetään hello.c
- wasm2wat
Err, otetaas uusiksi
WASMin rakenne
- WASM-yksikkö on moduli
- näkyy ehkä tulevaisuudessa JavaScriptissä ES6-modulina
- nyt WebAssembly.Module
- modulilla on importteja
- JS-funktiot ja -muuttujat
- alustettu lineaarinen muisti
- modulissa on funktioita
- WASM-modulin instanssilla on
- lineaarinen muisti (esim. merkkijonokäsittelyä varten)
- JavaScript voi myös lukea ja kirjoittaa
- taulukko (epäsuoria funktiokutsuja varten, jatkossa myös esim. DOM-viittauksia varten)
- lineaarinen muisti (esim. merkkijonokäsittelyä varten)
- funktiolla on
- pino
- käskyt laittavat pinoon taikka ottavat pinosta dataa
- paikallisia muuttujia
- voi lukea ja kirjoittaa vain pinon kautta
- pino
- data on numeroita
- merkkijonot ja rakenteiset tietotyypit pitää rakantaa itse
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.