DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

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

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

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

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

Рік:
2016
Тип роботи:
Лабораторна робота
Предмет:
Архітектура комп’ютерів та комп’ютерних систем
Група:
КІ З
Варіант:
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:46

Коментарі

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

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

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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