Harjoitukset 1 - 4.4.2016

Seuraavista tehtävistä voi saada yhteensä 0-6 harjoituspistettä. Tehtävissä on tarkoitus tutustua konekieliseen ohjelmointiin ja auttaa harjoitustyön kohdekielen valinnassa.

Oppimistavoitteet

  • 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

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.

1pt

Tehtävä 2

Tutustu kevyesti seuraaviin konekieliin:

Kirjoita 'Hello World' tai vastaava pieni ohjelma yhdellä tai useammalla näistä kielistä (1pt/kpl, max 3pt)

Tehtävä 3

Käännä tehtävässä 1 tekemäsi aliohjelma valitsemallesi konekielelle.

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

Tehtävä 4

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

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

Tehtävä 5

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ä 6

  1. Muodosta 1-3 hengen harjoitustyöryhmä (jos teet harjoitustyön).

  2. Luo ryhmälle oma git repo, josta löytyy tässä vaiheessa vähintään README tiedosto, jossa on:

    • Ryhmäläisten nimet ja yhteystiedot
    • Lyhyehkö idealause siitä, millainen ohjelmointikieli harjoitustyönä on syntymässä
    • Valittu kohdekieli ja sillä kirjoitettu ohjelma, joka tulostaa ryhmänne nimen.
  3. Perustakaa ryhmälle kanava kurssin slackiin. Lisätkää ohjaajat kanavalle.

  4. Huolehtikaa, että jokainen ryhmäläinen käy myös täyttämässä harjoitustyö-korppikyselyn

1pt

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