p align="left"> reg[ 7 ] 0 end state 4.and: 5&3=1 0101 & 0011 0001 Програма: lw 0 1 num1 lw 0 2 num2 andf 1 2 3 done halt num1 .fill 5 num2 .fill 3 Машинний код: 8454148 8519685 46792707 25165824 5 3 Кінцевий стан: @@@ @@@ state: pc 4 ZF = 0 stack: memory: mem[ 0 ] 8454148 mem[ 1 ] 8519685 mem[ 2 ] 46792707 mem[ 3 ] 25165824 mem[ 4 ] 5 mem[ 5 ] 3 registers: reg[ 0 ] 0 reg[ 1 ] 5 reg[ 2 ] 3 reg[ 3 ] 1 reg[ 4 ] 0 reg[ 5 ] 0 reg[ 6 ] 0 reg[ 7 ] 0 end state xor: 5#3=6 0101 # 0011 0110 Програма: lw 0 1 num1 lw 0 2 num2 xorf 1 2 3 done halt num1 .fill 3 num2 .fill 5 Машинний код: 8454148 8519685 50987011 25165824 3 5 Кінцевий стан: @@@ state: pc 4 ZF = 0 stack: memory: mem[ 0 ] 8454148 mem[ 1 ] 8519685 mem[ 2 ] 50987011 mem[ 3 ] 25165824 mem[ 4 ] 3 mem[ 5 ] 5 registers: reg[ 0 ] 0 reg[ 1 ] 3 reg[ 2 ] 5 reg[ 3 ] 6 reg[ 4 ] 0 reg[ 5 ] 0 reg[ 6 ] 0 reg[ 7 ] 0 end state 6. cmpge: 1= 5>=3 Програма: @@@ state: pc 4 ZF = 0 stack: memory: mem[ 0 ] 8454148 mem[ 1 ] 8519685 mem[ 2 ] 55181315 mem[ 3 ] 25165824 mem[ 4 ] 5 mem[ 5 ] 3 registers: reg[ 0 ] 0 reg[ 1 ] 5 reg[ 2 ] 3 reg[ 3 ] 1 reg[ 4 ] 0 reg[ 5 ] 0 reg[ 6 ] 0 reg[ 7 ] 0 end state 7. jma: if (7>=4) reg[4]=7; else reg[5]=4, reg[4]=7. Програма: lw 0 1 num1 lw 0 2 num2 jmae 1 2 1 lw 0 5 num2 lw 0 4 num1 done halt num1 .fill 7 num2 .fill 4 Машинний код: 8454150 8519687 59375617 8716295 8650758 25165824 7 3 Кінцевий стан: @@@ state: pc 6 ZF = 0 stack: memory: mem[ 0 ] 8454150 mem[ 1 ] 8519687 mem[ 2 ] 59375617 mem[ 3 ] 8716295 mem[ 4 ] 8650758 mem[ 5 ] 25165824 mem[ 6 ] 7 mem[ 7 ] 4 registers: reg[ 0 ] 0 reg[ 1 ] 7 reg[ 2 ] 4 reg[ 3 ] 0 reg[ 4 ] 7 reg[ 5 ] 0 reg[ 6 ] 0 reg[ 7 ] 0 end state 8. jmnae: if (5!>=6) reg[4]=6; else reg[4]=5, reg[5]=6. Програма: lw 0 1 num1 lw 0 2 num2 jmnae 1 2 1 lw 0 5 num2 lw 0 4 num1 done halt num1 .fill 5 num2 .fill 6 Машинний код: 8454150 8519687 63569921 8716295 8650758 25165824 5 6 Кінцевий стан: @@@ state pc 6 ZF = 0 stack: memory: mem[ 0 ] 8454150 mem[ 1 ] 8519687 mem[ 2 ] 63569921 mem[ 3 ] 8716295 mem[ 4 ] 8650758 mem[ 5 ] 25165824 mem[ 6 ] 5 mem[ 7 ] 6 registers: reg[ 0 ] 0 reg[ 1 ] 5 reg[ 2 ] 6 reg[ 3 ] 0 reg[ 4 ] 5 reg[ 5 ] 0 reg[ 6 ] 0 reg[ 7 ] 0 end state 9. bsr: if (16=1000) “1” - в позиції 4. Програма: lw 0 1 num1 bsr 1 2 done halt num1 .fill 16 Машинний код: 8454150 8519687 25165824 16 Кінцевий стан: @@@ state: pc 3 ZF = 1 stack: memory: mem[ 0 ] 8454147 mem[ 1 ] 71958528 mem[ 2 ] 25165824 mem[ 3 ] 16 registers: reg[ 0 ] 0 reg[ 1 ] -2147483648 reg[ 2 ] 4 reg[ 3 ] 0 reg[ 4 ] 0 reg[ 5 ] 0 reg[ 6 ] 0 reg[ 7 ] 0 end state 10. bsf: 8 (1000) - «1» в позиції 3. Програма: lw 0 1 num1 bsf 1 2 done halt num1 .fill 8 Машинний код: 8454147 71958528 25165824 8 Кінцевий стан: @@@ @@@ state: pc 3 ZF = 1 stack: memory: mem[ 0 ] 8454147 mem[ 1 ] 67764224 mem[ 2 ] 25165824 mem[ 3 ] 8 registers: reg[ 0 ] 0 reg[ 1 ] 1 reg[ 2 ] 3 reg[ 3 ] 0 reg[ 4 ] 0 reg[ 5 ] 0 reg[ 6 ] 0 reg[ 7 ] 0 end state 11. jne: if (16=1000) “1” - в позиції 4, ZF=1: Робота програми завершується, else reg[4]=8. Програма: lw 0 1 num1 bsr 1 0 3 jne 0 0 4 lw 0 4 num1 done halt num1 .fill 8 Машинний код: 8454150 8519687 67764224 8454147 25165824 8 Кінцевий стан: @@@ state: @@@ state: pc 5 ZF = 1 stack: memory: mem[ 0 ] 8454149 mem[ 1 ] 71827456 mem[ 2 ] 75497476 mem[ 3 ] 8650757 mem[ 4 ] 25165824 mem[ 5 ] 8 registers: reg[ 0 ] 0 reg[ 1 ] -2147483648 reg[ 2 ] 0 reg[ 3 ] 0 reg[ 4 ] 0 reg[ 5 ] 0 reg[ 6 ] 0 reg[ 7 ] 0 end state 12. push, pop: push 2, push 3, pop, pop.Програма: lw 0 1 num1 push lw 0 1 num2 push pop pop done halt num1 .fill 2 num2 .fill 3 Машинний код: 8454150 79691776 8454151 79691776 83886080 83886080 25165824 2 3 26 Проміжний стан, після двох push: @@@ state: pc 4 ZF = 0 stack: stk[ 0 ] 2 stk[ 1 ] 3 memory: mem[ 0 ] 8454151 mem[ 1 ] 79691776 mem[ 2 ] 8454152 mem[ 3 ] 79691776 mem[ 4 ] 83886080 mem[ 5 ] 83886080 mem[ 6 ] 25165824 mem[ 7 ] 2 mem[ 8 ] 3 registers: reg[ 0 ] 0 reg[ 1 ] 3 reg[ 2 ] 0 reg[ 3 ] 0 reg[ 4 ] 0 reg[ 5 ] 0 reg[ 6 ] 0 reg[ 7 ] 0 end state Кінцевий стан: @@@ state: pc 7 ZF = 0 stack: memory: mem[ 0 ] 8454151 mem[ 1 ] 79691776 mem[ 2 ] 8454152 mem[ 3 ] 79691776 mem[ 4 ] 83886080 mem[ 5 ] 83886080 mem[ 6 ] 25165824 mem[ 7 ] 2 mem[ 8 ] 3 registers: reg[ 0 ] 0 reg[ 1 ] 2 reg[ 2 ] 0 reg[ 3 ] 0 reg[ 4 ] 0 reg[ 5 ] 0 reg[ 6 ] 0 reg[ 7 ] 0 end state ВисновокПри виконанні даного курсового проекту було реалізовано прототипний CISC - комп'ютер згідно із поставленим завданням. Створений комп'ютер пройшов тестування на коректність виконуваних операцій та на відловлювання помилок у вхідному асемблерному коді при синтаксичному та семантичному аналізі. Засвоєно принципи дії та архітектуру прототипних варіантів CISC - комп'ютера. Було внесено зміни в структуру існуючого симулятора CISC - комп'ютера, а саме, доповнена система команд заданими інструкціями, змінено формат усіх команд в частині КОП. До існуючих типів адресації CISC - комп'ютера було добавлено безадресний тип адресації, що в свою чергу призвело до створення стеку всередині структури комп'ютера. Було проведено аналіз роботи команд усіх типів та написано тести з поданням результату роботи симулятора у вигляді виведеного стану машини. Література1. Мельник А.О. Архітектура комп'ютера. Наукове видання. - Луцьк: Волинська обласна друкарня, 2008. - 470 с. 2. Жмакин А.П. Архитектура ЭВМ. - СПб.: БХВ-Петербург, 2006. - 320 с. 3. Таненбаум Э. Архитектура компьютера.5-е изд. (+CD). - СПб.: Питер, 2007. - 844 с. 4. Patterson D., and Hennessy J.computer Architecture. A quantitative Approach. Second Edition. - Morgan Kaufmann Publishers, Inc., San Francisco, California, 1996. - 760 p. ДодаткиДоаток I (код програми-асемблера): /* Assembler for LC */ #include <stdlib. h> #include <stdio. h> #include <string. h> #define MAXLINELENGTH 1000 #define MAXNUMLABELS 65536 #define MAXLABELLENGTH 7 /* includes the null character termination */ #define ADD 0 #define NAND 1 #define LW 2 #define SW 3 #define BEQ 4 #define JALR 5
Страницы: 1, 2, 3, 4, 5
|