Harjoitukset 2 - 11.4.2016

Seuraavista tehtävistä voi saada yhteensä 0-6 harjoituspistettä. Tehtävissä on tarkoitus tutustua konekieliseen ohjelmointiin ja lyödä lukkoon harjoitustyösuunnitelma

Huolehdithan, että pystyt esittämään tehtäväsi demotilaisuudessa (ts. vastaukset webbisivulle tai omalle läppärille mukaan!)

Oppimistavoitteet

  • Ymmärrät relaation käsitteiden "Do The Work" ja oppiminen välillä
  • Tiedät karkeasti millaista on konekielinen ohjelmointi
  • Tunnistat LLVM, AMD64, JVM ja ARM symboliset konekielet toisistaan
  • Osaat kirjoittaa yksinkertaisia konekielisiä ohjelmia ja käyttää asiaan liittyviä työkaluja.
  • Tunnet olennaisimmat käsitteet kuten mitä ovat rekisterit, pino, keko ja millaisia assemblerkäskyt yleisesti ovat.
  • Osaat muuttaa lausekkeiden laskemisen käskysarjoiksi ja samalla ymmärrät rekistereiden hallinnan ongelmallisuuden
  • Sinulla on selkeä näkemys siitä millaisen harjoitustyön teet ja osaat priorisoida haluamasi ominaisuudet

Tehtävä 1

Tee valitsemallasi ohjelmointikielellä ohjelma, joka laskee toisen asteen polynomin juuret. Oleta polynomin olevan muodossa \(f(x) = ax^2 + bx + c\) ja että ohjelma saa syötteenään kertoimet \(a\),\(b\) ja \(c\).

Jaa ohjelmasi siten, että siinä on pääohjelma, joka lukee syötteet ja tulostaa tulokset sekä aliohjelma, joka laskee varsinaisen laskutoimituksen.

0 pt

Tehtävä 2

Käännä tehtävässä 1 tekemäsi aliohjelma käsin valitsemallesi konekielelle. (Suosittelemme LLVM:ää ja AMD64:sta, tässä järjestyksessä)

1pt (2pt jos teet tämän kahdella eri konekielellä)

Tehtävä 3

Käännä tehtävässä 1 tekemäsi pääohjelma käsin ajattavaksi konekieliseksi ohjelmaksi, ja kutsu siitä tehtävässä 3 tehtyä aliohjelmaa.

1pt (2pt jos teet tämän kahdella eri konekielellä)

Tehtävä 4

Hahmottele (karkealla tasolla, pseudokoodina) käyttämäsi menetelmä, jolla käänsit ohjelmasi assemblyksi. Miten menetelmäsi yleistyisi monimutkaisempien ohjelmien kääntämiseen? Entäpä jos ohjelmassa olisi esimerkiksi pidempiä ja monimutkaisempia lausekkeita?

1pt

Tehtävä 5

Harjoitustyön vaiheen 1 palautus.

Tarkentaen, huolehdi, että olet

  • päättänyt kohdekielen ja isäntäkielen
  • tehnyt suunnitelma lähdekielestä: (vaatimukset)
  • täyttänyt harjoitustyö-korppikyselyn
  • Luonut git repon, jossa harjoitustyösi elää ja antanut osoitteen ohjaajille.

Esimerkkisuunnitelmia: AJK-2016 VT-2016

3pt

Esimerkkivastauksia

Tässä muutamia demoissa tehtyjä vastauksia tehtäviin. Suuret kiitokset niitä lahjoittaneille opiskelijoille!

These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.