581305-6 Datororganisation, 2 sv, kursförhör den 11 maj 2001 (Kääntöpuolella suomeksi suomeksi)

Skriv på varje svarsark ditt namn, ditt studentnummer (eller personnummer), namn på förhöret eller kursen, din namnteckning, och sidonummer.
  1. [12 p] Representation av data.
    1. [3 p] Ange skilt för sig en Big Endian och en Little Endian representation av 16-bits decimaltalen +75 och –23 i maskinen, då representationsformen för heltal är
      1. en enskild förteckensbit
      2. två-komplement
      3. ett-komplement
      4. adderad med 32767 (32767=215-1)
    2. [3 p] Anta att vi använder byteordningen hos Big Endian. Vilket flyttal representerar ett 32-bits värde 0x41100000 enligt IEEE standarden (exponent på 8 bitar)?
      (Prefixet “0x” betyder att talet som följer står i hexadecimalform)
    3. [3 p] Hur lagras teckensträngar på maskinen? Ge ett exakt exempel av hur man lagrar teckensträngen
      “very simple” i minnesadressen 0x1A00.
    4. [3 p] Maskinen Ttk-91 har inga maskininstruktioner som använder flyttal. Kan man utföra flyttalsberäkning med hjälp av ttk-91? Om man kan, så hur då? Om man inte kan, så varför?

  2. [12 p] Processorer och processer (processor and process)
    1. [3 p] Vilka är processorns tillstånd under exekvering (processor state)?
    2. [3 p] Hur och när förändras processorns tillstånd? Behandla varje möjlig tillståndsövergång skilt för sig.
      Ge ett exempel, som kunde förorsaka tillståndsövergången, för varje tillståndsövergång.
    3. [3 p] Vilka är processens tillstånd under exekvering (process state)?
    4. [3 p] När och hur förändras processens tillstånd? Behandla varje möjlig tillståndsöverföring skilt för sig.
      Ge ett exempel, som kunde förorsaka tillståndsövergången, för varje tillståndsövergång.

  3. [12 p] Att exekvera Java-program genom tolkning med en dator med Pentium-processor.
    Anta att Java-programmet innehåller satsen A = B+C;
    1. [3 p] Hur representeras den ovannämnda satsen i datorns minne under exekvering?
      Var är värdena på variablerna A, B och C? I registret eller minnet?
    2. [3 p] Hur exekverar en dator med Pentium-processor den ovannämnda satsen i Java-programmet?
    3. [3 p] En hurdan process står i tur att exekveras under exekveringen av den ovannämnda satsen?
    4. [3 p] Om exekveringen av programmet skulle göras med hjälp av en JIT-kompilering, hur skulle då svaren till a, b och c förändras? 
    5. Bonusfråga [1 p]: Vad är det för skillnad mellan Java och C#?
  4.  

  5. [12 p]  Maskinspråket hos Ttk-91. En tabell T[20] med heltal har deklarerats på huvudprogramsnivå. Tabellen har alltså 20 element (elementen 0,…,19). Heltalsvariabeln k har också deklarerats på huvudprogramsnivå.
    1. [3 p] Ange de maskinkommandon med vilka man matar ut värdet på elementet T[k].
    2. [3 p] Ange de maskinkommandon, med vilka man initierar tabellen T så att T[i] =  i2 + 3 för alla element i T.
    3. [3 p] Gör underprogrammet Initiera(S, N) som vid anrop initierar heltalstabellen S med elementet N så att S[i] = i2 + 3 för alla element i tabell S. Använd det rekommenderade implementeringssättet och anropningsmekanismen för underprogram (funktioner). Parametern S är en referensparameter och parametern N är en värdeparameter.
    4. [3 p] Ge ttk-91:s symboliska maskinspråks maskinkommandon, med vilka man kan initiera tabellen T med hjälp av underprogrammet Initiera(S, N) så att värdet på varje element T[i] blir i2 + 3. Använd den rekommenderade anropningsmekanismen för underprogram. Parametern S är en referensparameter
      och parametern N är en värdeparameter

TTK-91 maskinspråkets kommandon är:  NOP, STORE, LOAD, IN, OUT, ADD, SUB, MUL, DIV, MOD, AND, IR, XOR, SHL, SHR, COMP, JUMP, JNEG, JZER, JPOS, JNNEG, JNZER, JNPOS, JLES, JEQU, JGRE, JNLES, JNEQU, JGRE, CALL, EXIT, PUSH, POP, PUSHR, POPR, SVC