DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Звіт з лабораторної роботи № 4 «Робота з симулятором машини Ноймана. Дослідження архітектури системи команд»

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

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
КН
Кафедра:
Кафедра електронних обчислювальних машин

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

Рік:
2012
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Архітектура комп'ютерів
Група:
КН-21
Коротко про документ

Про що ця робота

У звіті досліджено архітектуру системи команд за допомогою симулятора машини Неймана. Розширено набір команд симулятора та перевірено коректність виконання програми.

У роботі розглядаються

  • Архітектура комп'ютерів
  • Симулятор машини Неймана
  • Система команд
  • Машинні коди
  • Регістри та пам'ять

Зміст і розділи

  1. Мета
  2. Теоретичні відомості
  3. Завдання
  4. Хід роботи
  5. Висновок
Для кого:Студенти технічних спеціальностей та викладачі дисциплін з архітектури комп'ютерів.
Викладачі:Не вказано

Ключові поняття

машина Нейманасистема командпам'ятьмашинний кодінструкціястекпрограмний лічильник

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” / Кафедра ЕОМ ЗВІТ про виконання лабораторної роботи № 4 «Робота з симулятором машини Ноймана. Дослідження архітектури системи команд.» з дисципліни «Архітектура комп’ютерів» Львів – 2012 Мета: зрозуміти принципи виконання архітектури системи команд на симуляторі машини Ноймана, зрозуміти і дослідити виконання інструкції. Теоретичні відомості Загальна схема роботи асемблера (рис. 1) складається з 2 проходів. На першому проході асемблер перевіряє коректність синтаксису команд. На другому виконується генерування відповідних машинних команд, тобто числового представлення асемблерної команди. Функція readAndParse виконує зчитування рядку асемблерної програми і декодування на відповідні поля: мітка, код операції, операнди. Отримана таким чином і декодована інструкція перевіряється на коректність: існування команди, відповідна кількість аргументів, існування міток та т. п. Функція testRegArg перевіряє коректність використання назви регістра. Функція testAddrArg перевіряє коректність використання адреси. Функція labelArray перетворює відповідну мітку у адресу. Program.as та program.mc – відповідно вхідний та вихідний файли. Симулятор починає свою роботу ініціалізацією пам’яті та регістрів 0 значеннями (рис. 2.). Наступним кроком відбувається заванаження програми у машинних кодах в пам’ять. Далі відбувається покрокове виконання інструкцій та вивід стану на зовнішній пристрій (чи на екран консолі чи у файл). У stateStruct зберігається стан машини – значення регістрів, пам’яті та програмний лічільник. stateStruct Функція Run виконує обробку інструкцій з пам’яті, функція printState виводить поточний стан машини, а функція convertNum виконує перетворення числа у доповняльний код. Завдання: розширити архітектуру систему команд симулятора машини Ноймана, скласти програму на асемблері з розшириним набором команд, перетворити її у машинні коди, запустити симулятор, увести до нього коди машинних, проаналізувати і пояснити отримані результати, довести коректність роботи розширеного набору команд, скласти звіт з виконання лабораторних досліджень та захистити його. Варіант № 20 -> If А==B Des=1, else Des=0 Хід роботи Заміняємо код в вайлі assemble на свій згідно з варінтом … #define FUNC 7 ... /* check register fields */ if (!strcmp(opcode, "add") || !strcmp(opcode, "nand") || !strcmp(opcode, "lw") || !strcmp(opcode, "sw") || !strcmp(opcode, "beq") || !strcmp(opcode, "jalr") || !strcmp(opcode, "FUNC")) { testRegArg(arg0); testRegArg(arg1); } if (!strcmp(opcode, "add") || !strcmp(opcode, "nand") || !strcmp(opcode, "FUNC")) { testRegArg(arg2); } … } else if (!strcmp(opcode, "FUNC")) { num = (FUNC << 22) | (atoi(arg0) << 19) | (atoi(arg1) << 16) | atoi(arg2); } … Заміняємо код в вайлі simulate на свій згідно з варінтом … else if (opcode == FUNC) { if (state.reg[arg0] == state.reg[arg1]) state.reg[arg2] = 1; else state.reg[arg2] = 0; } … Створюю тестову програму. lw 0 1 A load reg1 with A lw 0 2 B load reg2 with B FUNC 1 2 3 my Func halt end of program A .fill 5 B .fill 10 Запускаю створену програму на асемблювання та отримую наступні машинні інструкції. 8454148 8519685 30015491 25165824 5 10 Запускаю тестову програму на симуляцію. memory[0]=8454148 memory[1]=8519685 memory[2]=30015491 memory[3]=25165824 memory[4]=5 memory[5]=10 @@@ state: pc 0 memory: mem[ 0 ] 8454148 mem[ 1 ] 8519685 mem[ 2 ] 30015491 mem[ 3 ] 25165824 mem[ 4 ] 5 mem[ 5 ] 10 registers: reg[ 0 ] 0 reg[ 1 ] 0 reg[ 2 ] 0 reg[ 3 ] 0 reg[ 4 ] 0 reg[ 5 ] 0 reg[ 6 ] 0 reg[ 7 ] 0 end state @@@ state: pc 1 memory: mem[ 0 ] 8454148 mem[ 1 ] 8519685 mem[ 2 ] 30015491 mem[ 3 ] 25165824 mem[ 4 ] 5 mem[ 5 ] 10 registers: reg[ 0 ] 0 reg[ 1 ] 5 reg[ 2 ] 0 reg[ 3 ] 0 reg[ 4 ] 0 reg[ 5 ] 0 reg[ 6 ] 0 reg[ 7 ] 0 end state @@@ state: pc 2 memory: mem[ 0 ] 8454148 mem[ 1 ] 8519685 mem[ 2 ] 30015491 mem[ 3 ] 25165824 mem[ 4 ] 5 mem[ 5 ] 10 registers: reg[ 0 ] 0 reg[ 1 ] 5 reg[ 2 ] 10 reg[ 3 ] 0 reg[ 4 ] 0 reg[ 5 ] 0 reg[ 6 ] 0 reg[ 7 ] 0 end state @@@ state: pc 3 memory: mem[ 0 ] 8454148 mem[ 1 ] 8519685 mem[ 2 ] 30015491 mem[ 3 ] 25165824 mem[ 4 ] 5 mem[ 5 ] 10 registers: reg[ 0 ] 0 reg[ 1 ] 5 reg[ 2 ] 10 reg[ 3 ] 0 reg[ 4 ] 0 reg[ 5 ] 0 reg[ 6 ] 0 reg[ 7 ] 0 end state machine halted total of 4 instructions executed final state of machine: @@@ state: pc 4 memory: mem[ 0 ] 8454148 mem[ 1 ] 8519685 mem[ 2 ] 30015491 mem[ 3 ] 25165824 mem[ 4 ] 5 mem[ 5 ] 10 registers: reg[ 0 ] 0 reg[ 1 ] 5 reg[ 2 ] 10 reg[ 3 ] 0 reg[ 4 ] 0 reg[ 5 ] 0 reg[ 6 ] 0 reg[ 7 ] 0 end state
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

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

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

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

Admin

26.02.2023 12:38

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