581305-6 Datororganisation, 2 sv, kursförhör den 11 maj 2001 (Kääntöpuolella
suomeksi )
Skriv på varje svarsark ditt namn, ditt studentnummer (eller
personnummer), namn på förhöret eller kursen, din namnteckning, och
sidonummer.
- [12 p] Representation av data.
- [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
- en enskild förteckensbit
- två-komplement
- ett-komplement
- adderad med 32767 (32767=215-1)
- [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 p] Hur lagras teckensträngar på maskinen? Ge ett exakt exempel av
hur man lagrar teckensträngen
“very simple” i minnesadressen 0x1A00.
- [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?
- [12 p] Processorer och processer (processor and process)
- [3 p] Vilka är processorns tillstånd under exekvering (processor
state)?
- [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 p] Vilka är processens tillstånd under exekvering (process state)?
- [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.
- [12 p] Att exekvera Java-program genom tolkning med en dator med
Pentium-processor.
Anta att Java-programmet innehåller satsen A = B+C;
- [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?
- [3 p] Hur exekverar en dator med Pentium-processor den ovannämnda
satsen i Java-programmet?
- [3 p] En hurdan process står i tur att exekveras under exekveringen
av den ovannämnda satsen?
- [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?
- Bonusfråga [1 p]: Vad är det för skillnad mellan Java och C#?
- [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å.
- [3 p] Ange de maskinkommandon med vilka man matar ut värdet på
elementet T[k].
- [3 p] Ange de maskinkommandon, med vilka man initierar tabellen T så
att T[i] = i2 + 3 för alla element i T.
- [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.
- [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