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.