My dream CPU |
|
V. Примерни програмиЧаст 1. Hello world програми.Тези програми демонстрират работата на основни инструкции. Обясняват какво се случва в конвейерите за инструкции и модулите за изчисления. 1. Hello world 1Тази програма демонстрира сборът на две числа и записът на резултата в паметта. 0 I:rA <-- #2 2 I:rB <-- #3 4 I:AplsB --> M300
Ред 0 регистър rA на целочисленият конвейер се зарежда с 2. Това е непосредствена адресация. Ще проследим изпълнението на програмата такт по такт и ще наблюдаваме какво се случва във всяка степен на конвейера, както и в другите модули. Състоянието на конвейерите е видимо в ExLog секцията на дебъгера/емулатора.
Такт 1
Такт 2
Такт 3
Такт 4
Такт 5
Такт 6
Такт 7
Такт 8
Такт 9
Такт 10
Такт 11 Да при традиционното обръщение към паметта за писане или четене, на единият тактов сигнал се предава адресът с който ще се работи и съответните управляващи сигнали и на следващият такт се прехвърлят данните. Тук на положителният фронт се предава адресът, на отрицателният фронт на тактовият импулс се извършва преносът на данни, четене или писане. 2. Hello world 2Тази програма демонстрира сборът на две числа с плаваща запетая. Разполагането им започва от адрес 1000. Резултата се поставя в адрес 1004. 0 A: rBs1 <-- #1000 2 D: rA <-- M[rBs1, ]0 4 D: rB <-- M[rBs1, ]2 6 D: AplsB --> M[rBs1, ]4 Данни 1000 2.0 1001 0.4 1002 5.0 1003 0.7 В ред 0 rBs1 на адресният модул се зарежда с 1000. Непосредствена адресация. Ред2 rA на модулът за изчисления с плаваща запетая ще се зареди от адрес 1000. Имаме индексна адресация по rBs1 който в момента има стоност 1000. Ред 4 rB на модулът за изчисления с плаваща запетая ще се зареди от адрес 1002. Имаме индексна адресация по rBs1 който в момента има стоност 1000, но имаме и операнд 2, който се прибавя към индекса за да се получи ефективен адрес. Ред 6 извършва се събиране на rA и rB от модула за изчисления с плаваща запетая. Резултатът се записва в адрес 1004. Индексна адресация по rBs1 и операнд 4. КрайКато резултат от тази програма на адрес 1004 е записано числото 8.1. |