Jani Kurhinen 8.5.2008
Tentissä saa käyttää kaikkia saatavilla olevia staattisia informaatiolähteitä. Kaikenlainen kommunikointi tai muu interaktiivinen toiminta on kielletty.
Tentistä tulee palauttaa kolme tiedostoa, jotka on nimetty seuraavasti:
tiea325PT1_käyttäjätunnut_C.c tiea325PT1_käyttäjätunnut_ASM.asm tiea325PT1_käyttäjätunnut_KOMENNOT.txt
Tehtävät tehdään THK:n linux-koneessa jalava.cc.jyu.fi. Kommentoi ohjelmakoodien kaikki rivit!
Tee C-kielinen ohjelma, joka kutsuu ulkoista funktiota TaulukonSumma() Funktion esittely ja ohjeet sen käytöstä on tiedostossa tenttifunktiot.h. Alusta ohjelmassasi taulukko arvoilla [1,1,2,3,5] ja välitä tämä taulukko aliohjelmalle parametrina. Funktion kutsumisen jälkeen ohjelman tulee sisältää seuraavat ohjelmarivit.
//a on int tyypin muuttuja, joka sisältää TaulukonSumma()-funktion paluuarvon printf("Taulukon lukujen summa on %d\n",a);
Toteuta edellisen tehtävän TaulukonSumma-funktio x86-assemblyllä. Ohjelmakoodin tulee selvitä kaikista taulukoista, joiden pituus on vähintään yksi.
; ;TEHTÄVÄ 2 ; ;Käytä rekistereitä eax, ebx, ecx ja edx paikalliseen datan käsittelyyn ;pinoon sijoitettavien paikallisten muuttujien sijaan. ; ;Alla on hyvin pelkistetty koodirunko ; ; ;Keosta varattavat muistilohkot. Kukin label on osoite. SECTION .data ;Varsinainen koodi tulee tähän. SECTION .text global TaulukonSumma ;komponentin entrypointti. TaulukonSumma: ;Hyppyviite eli label ret
Käännä edelliset tehtävät objektitiedostoiksi ja edelleen suoritettavaksi ohjelmaksi (Viimeisessä vaiheessa liität siis kaksi .o-tiedostoa toisiinsa!). Millaisilla komennoilla nämä teet? Komennot eivät saa aiheuttaa varoituksia tai virheilmoituksia.