Лабораторна робота №4

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКТА
Факультет:
КН
Кафедра:
Кафедра ЕПМС

Інформація про роботу

Рік:
2015
Тип роботи:
Лабораторна робота
Предмет:
Архітектура комп’ютерів та комп’ютерних систем
Група:
КІ З
Варіант:
3

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет «Львівська політехніка» Кафедра «ЕОМ» Лабораторна робота №4 з предмету “Архітектура комп’ютерів” Мета: зрозуміти принципи виконання архітектури системи команд на симуляторі машини Ноймана, зрозуміти і дослідити виконання інструкції. Завдання: розширити архітектуру систему команд симулятора машини Ноймана, скласти програму на асемблері з розшириним набором команд, перетворити її у машинні коди, запустити симулятор, увести до нього коди машинних, проаналізувати і пояснити отримані результати, довести коректність роботи розширеного набору команд, скласти звіт з виконання лабораторних досліджень та захистити його. Теоретичні відомості  Рис. 1. Схема роботи асемблера Загальна схема роботи асемблера (рис. 1) складається з 2 проходів. На першому проході асемблер перевіряє коректність синтаксису команд. На другому виконується генерування відповідних машинних команд, тобто числового представлення асемблерної команди. Функція readAndParse виконує зчитування рядку асемблерної програми і декодування на відповідні поля: мітка, код операції, операнди. Отримана таким чином і декодована інструкція перевіряється на коректність: існування команди, відповідна кількість аргументів, існування міток та т. п. Функція testRegArg перевіряє коректність використання назви регістра. Функція testAddrArg перевіряє коректність використання адреси. Функція labelArray перетворює відповідну мітку у адресу. Program.as та program.mc – відповідно вхідний та вихідний файли.  Рис. 2 Функціональна схема симулятора. Симулятор починає свою роботу ініціалізацією пам’яті та регістрів 0 значеннями (рис. 2.). Наступним кроком відбувається заванаження програми у машинних кодах в пам’ять. Далі відбувається покрокове виконання інструкцій та вивід стану на зовнішній пристрій (чи на екран консолі чи у файл). У stateStruct зберігається стан машини – значення регістрів, пам’яті та програмний лічільник. stateStruct Функція Run виконує обробку інструкцій з пам’яті, функція printState виводить поточний стан машини, а функція convertNum виконує перетворення числа у доповняльний код. Завдання 3 Остача від ділення  Хід роботи Змінений код в файлі asol.c #define DIV 7 ... if (!strcmp(opcode, "add") || !strcmp(opcode, "nand") || !strcmp(opcode, "lw") || !strcmp(opcode, "sw") || !strcmp(opcode, "beq") || !strcmp(opcode, "jalr") || !strcmp(opcode, "div") ) { testRegArg(arg0); testRegArg(arg1); } if (!strcmp(opcode, "add") || !strcmp(opcode, "nand") || !strcmp(opcode, "div") ) { testRegArg(arg2); } … } else if (!strcmp(opcode, "DIV_RE")) { num = (DIV_RE << 22) | (atoi(arg0) << 19) | (atoi(arg1) << 16) | atoi(arg2); Змінений код в файлі ssol.c #define DIV 7 … else if (opcode ==DIV_RE) { state.reg[arg2] = state.reg[arg0]%state.reg[arg1]; } Після цього створила файл Budim4.as ,його код: lw 0 1 ONE lw 0 2 TWO start DIV_RE 1 2 1 done halt ONE .fill 11 TWO .fill 3 stAddr .fill start Використовуючи консольне вікно та програми ASOLBUDIM.exe i SSOLBUDIM.exe перетворила ассемблерний код у машинний (команда ASOLBUDIM Budim4.as Budim4.mc) та провела симуляцію (ASOLBUDIM Budim4.mc>rezultl4.txt), де rezultl4.txt – файл, що зберігає покроковий вивід станів машини в ході виконання машинних інструкцій: / Рис.1 «Запис команд у консолі» Отримані файли на локальному диску D: / Вмістиме файлу Budim4.mc: 8454148 8519685 30015489 25165824 11 3 2 Кінцевий результат у файлі rezultl4.txt: machine halted total of 4 instructions executed final state of machine: @@@ state: pc 4 memory: mem[ 0 ] 8454148 mem[ 1 ] 8519685 mem[ 2 ] 30015489 mem[ 3 ] 25165824 mem[ 4 ] 11 mem[ 5 ] 3 mem[ 6 ] 2 registers: reg[ 0 ] 0 reg[ 1 ] 2 reg[ 2 ] 3 reg[ 3 ] 0 reg[ 4 ] 0 reg[ 5 ] 0 reg[ 6 ] 0 reg[ 7 ] 0 end state В регістрах reg[4], reg[5] містяться змінні, які використовуються для ділення. Результат ми зберігаємо в reg[6] і його значення дорівнює 2; 11/3 = 3 (остача 2) – тому можна вважати, що дана програма працює правильно. Висновок: після виконання даної лабораторної роботи я зрозуміла принципи виконання архітектури системи команд на симуляторі машини Ноймана, зрозуміла і дослідила виконання інструкції.
Антиботан аватар за замовчуванням

23.10.2016 03:10-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!