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
  • 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)
  • funktiolla on
    • pino
      • käskyt laittavat pinoon taikka ottavat pinosta dataa
    • paikallisia muuttujia
      • voi lukea ja kirjoittaa vain pinon kautta
  • 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.