1
Recimo, da načrtujemo format ukaza za računalnik, ki bo lahko dostopal do 65.536 (216) besed. V ukazih želimo poleg operacijske kode uporabiti 3 pomnilniške operande. Vseh ukazov, ki jih bo računalnik lahko izvedel, bo 30. Najmanj koliko bitov bodo dolgi ukazi?
2
Opiši, kaj sprožijo naslednji v dvojiški obliki zapisani ukazi v CPE, ki smo jo opisali?
Kakšna bi bila na koncu vrednost registra R0
, če bi se ti trije ukazi izvedli zaporedoma?
3
Naša CPE, kot smo jo definirali, predvideva 12 bitov za zapis naslova v pomnilniku. Recimo, da bi želeli vseeno naslavljati 1 GiB pomnilnika, kar zahteva 32 bitov. Razmisli in predlagaj, kako lahko to naredimo.
4
S strojnimi ukazi računalnika, ki smo ga obravnavali, napiši program, ki na zaslon 2015-krat izpiše številko 3.
5
Recimo, da v rešitvi prejšnje naloge zamenjamo vrstico
21: JUMP 13z vrstico
21: JUMP 14Kakšen bo sedaj rezultat programa?
6
Recimo, da bi med ukaze našega procesorja radi vpeljali še ukaz, ki naredi bitni izključujoči (ekskluzivni) ali (ang. xor) med operandoma – podobno kot imamo (bitni) logični ali. Poišči kakšna operacija je izključujoči ali. V katero skupino ukazov meniš, da sodi ta ukaz? Na koncu mu moraš določiti še operacijsko kodo.
7
Zaradi poenostavitve razlage smo v primeru programa predpostavili, da je koda številke, ki jo prebere ukaz IN
enaka sami številki. Slednje običajno ni res. Najprej preberemo samo eno števko in poleg tega je slednja zakodirana v neko številko. Podobno kodiranje smo srečali v poglavju o programiranju, kjer smo v namen dekodiranja uporabili posebno funkcijo int
.
Posebno pogosto uporabljana koda je koda ASCII (poišči na spletu), pri kateri je koda števke 0 enaka 48, koda števke 1 enaka 49 in tako naprej do števke 9, ki ima kodo 57. Popravi program tako, da bo upošteval, da je prebrana vrednost koda števke in ne sama številka. Podobno moramo seveda, če želimo izpisati neko števko, izpisati njeno kodo.