рефераты рефераты
Главная страница > Курсовая работа: Проектування комп'ютера  
Курсовая работа: Проектування комп'ютера
Главная страница
Банковское дело
Безопасность жизнедеятельности
Биология
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
География экономическая география
Геодезия
Геология
Госслужба
Гражданский процесс
Гражданское право
Иностранные языки лингвистика
Искусство
Историческая личность
История
История государства и права
История отечественного государства и права
История политичиских учений
История техники
История экономических учений
Биографии
Биология и химия
Издательское дело и полиграфия
Исторические личности
Краткое содержание произведений
Новейшая история политология
Остальные рефераты
Промышленность производство
психология педагогика
Коммуникации связь цифровые приборы и радиоэлектроника
Краеведение и этнография
Кулинария и продукты питания
Культура и искусство
Литература
Маркетинг реклама и торговля
Математика
Медицина
Реклама
Физика
Финансы
Химия
Экономическая теория
Юриспруденция
Юридическая наука
Компьютерные науки
Финансовые науки
Управленческие науки
Информатика программирование
Экономика
Архитектура
Банковское дело
Биржевое дело
Бухгалтерский учет и аудит
Валютные отношения
География
Кредитование
Инвестиции
Информатика
Кибернетика
Косметология
Наука и техника
Маркетинг
Культура и искусство
Менеджмент
Металлургия
Налогообложение
Предпринимательство
Радиоэлектроника
Страхование
Строительство
Схемотехника
Таможенная система
Сочинения по литературе и русскому языку
Теория организация
Теплотехника
Туризм
Управление
Форма поиска
Авторизация




 
Статистика
рефераты
Последние новости

Курсовая работа: Проектування комп'ютера

  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


Проміжний стан, після двох 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

#define HALT 6

#define NOOP 7

#define div 8

#define imul 9

#define xidiv 10

#define andf 11

#define xorf 12

#define cmpge 13

#define jmae 14

#define jmnae 15

#define bsf 16

#define bsr 17

#define jne 18

#define push 19

#define pop 20

int readandfParse (FILE *, char *, char *, char *, char *, char *);

int translateSymbol (char labelArray [MAXNUMLABELS] [MAXLABELLENGTH], int labelAddress [MAXNUMLABELS], int, char *);

int isNumber (char *);

void testRegArg (char *);

void testAddrArg (char *);

int main (int argc, char *argv [])

{

char *inFileString, *outFileString;

FILE *inFilePtr, *outFilePtr;

int address;

char label [MAXLINELENGTH], opcode [MAXLINELENGTH], arg0 [MAXLINELENGTH],

arg1 [MAXLINELENGTH], arg2 [MAXLINELENGTH], argTmp [MAXLINELENGTH];

int i;

int numLabels=0;

int num;

int addressField;

char labelArray [MAXNUMLABELS] [MAXLABELLENGTH];

int labelAddress [MAXNUMLABELS];

if (argc! = 3) {

printf ("error: usage: %s <assembly-code-file> <machine-code-file>\n",

argv [0]);

exit (1);

}

inFileString = argv [1];

outFileString = argv [2];

inFilePtr = fopen (inFileString, "r");

if (inFilePtr == NULL) {

printf ("error in opening %s\n", inFileString);

exit (1);

}

outFilePtr = fopen (outFileString, "w");

if (outFilePtr == NULL) {

printf ("error in opening %s\n", outFileString);

exit (1);

}

/* map symbols to addresses */

/* assume address start at 0 */

for (address=0; readandfParse (inFilePtr, label, opcode, arg0, arg1, arg2);

address++) {

/*

printf ("%d: label=%s, opcode=%s, arg0=%s, arg1=%s, arg2=%s\n",

address, label, opcode, arg0, arg1, arg2);

*/

/* check for illegal opcode */

if (strcmp (opcode, "add") && strcmp (opcode, "nand") &&

strcmp (opcode, "lw") && strcmp (opcode, "sw") &&

strcmp (opcode, "beq") && strcmp (opcode, "jalr") &&

strcmp (opcode, "halt") && strcmp (opcode, "noop") &&

strcmp (opcode,". fill") && strcmp (opcode, "div") &&

strcmp (opcode, "imul") && strcmp (opcode, "xidiv") &&

strcmp (opcode, "andf") && strcmp (opcode, "xorf") &&

strcmp (opcode, "cmpge") && strcmp (opcode, "jmae") &&

strcmp (opcode, "jmnae") && strcmp (opcode, "bsr") &&

strcmp (opcode, "jne") && strcmp (opcode, "bsf") &&

strcmp (opcode, "push") && strcmp (opcode, "pop"))

{

printf ("error: unrecognized opcode %s at address %d\n", opcode,

address);

exit (1);

}

/* check register fields */

if (! strcmp (opcode, "add") ||! strcmp (opcode, "nand") ||

Страницы: 1, 2, 3, 4, 5, 6, 7, 8

рефераты
Новости