Tietokoneen toiminta, kevät 2005

Lisätehtäviä

Tähän on koottu vanhoja harjoitus- ja koetehtäviä niille, jotka kaipaavat lisäharjoittelua.

  1. Korkean tason kieli vs. symbolinen konekieli.
    Oletetaan, että meillä on korkean tason kielellä (C, Java, Pascal) tehty ohjelma Simple, joka on käännetty TTK-91-koneen konekielelle.
    1. Mitkä ohjelman Simple tiedot (esim. muuttujien arvot) haluttaisiin pitää laiterekistereissä koko ohjelman suorituksen ajan. Miksi? Anna esimerkkejä.
    2. Mitkä ohjelman Simple tiedot haluttaisiin pitää muistissa koko ohjelman suorituksen ajan. Miksi? Anna esimerkkejä.
    3. Mitkä ohjelman Simple tiedot haluttaisiin pitää joskus rekisterissä ja joskus muistissa ohjelman suorituksen aikana. Miksi? Anna esimerkkejä.
    4. Mitkä ohjelman Simple tietojen ei tarvitse sijaita missään ohjelman suorituksen aikana? Miksi? Anna esimerkkejä. (Tämä ei ole kompakysymys)

  2. Seuraavissa symbolisen konekielen käskyissä on virheitä. Etsi virheet ja korjaa käskyt oikeaan muotoon.
    6puu   LOAD R1, apu
    pois   ADD  apu, R1
           SUB  R8, @R1
    Taas5  CMPA R1, sata
           JLES Loppu
           MUL R1, =sata
           NOP R1, 0
           JMP Taas
    Loppu  SVC =HALT, SP
    

  3. Tee ttk-91-koneen symbolisella konekielellä ohjelma, joka tekee saman kuin C-ohjelma
            int x=7, y=33, z=5;  /* variables x, y, z */
            main () {           /* main program */
                y = 4;
                x = 52 - y * z;
                if (x < 40) {
                    y = x - 34;
                    }
                else {
                    y = x / y + 4;
                    z = 23;
                    }
                printf ( "%d %d %d \n", x, y, z)  /* print x, y, z */
            }