y"> емулятор програма процесор цикл
5. Розробка структури програми: класів і методів
При перетворенні команд з мнемокода асемблер використовує формат В«ознака-байтВ». Тоді в кожній парі байтів перший байт може приймати значення: 0 - ознака того, що другий байт пари адреса розміщення наступних байтів програми, 1-ознака того, що другий байт пари - командний байт. p align="justify"> поміщає команду, що зберігається в комірці пам'яті під номером, записаним у SCHAK, в нульовий елемент масиву RК, за допомогою switch визначає за кодом команду, який її розмір, і записує другий байт команди, для команд другого типу , в перший елемент масиву. Після цього для команд другого типу заповнюються адресні регістри, для команд типу 1А - регістри R1 і R2, потім викликається відповідний метод ALU. По закінченні методу для команд типу 1А мінлива класу RAM memChange отримає значення true, для того, щоб потім знати про зміну в пам'яті. SCHAK збільшується на довжину команди. Крім команд зазначених у мнемоніці даної структури UU визначає умовну команду HALT. Для цієї команди не виконується ніяких дій, лише значення isRunning змінюється на false. Після цього дані про регістри виводяться у файл протоколу. p align="justify"> Клас processor керуватиме виконанням програми.
Він міститиме екземпляри класів RAM, UU, ALU.
У цьому класі буде міститися метод читання з об'єктного файлу та заповнення пам'яті, метод обнулення пам'яті і всіх регістрів, метод виведення масиву пам'яті, методи для покрокового і повного виконання програми.
Метод input (читання) не містить параметрів і що повертається. Метод працюватиме з потоком вводу. Так як вхідний файл бінарний, то необхідно використовувати клас RandomAccessFile. З вихідного файлу дані будемо посимвольний зчитувати і записувати в байтовий масив VXfile. Потім, використовуючи цей масив, будемо заповнювати пам'ять. У циклі for від початку до кінця VXfile, використовуючи перемикач switch, будемо порівнювати значення елемента масиву з 0 або 1. Так як використовувався формат В«ознака-байтВ», то якщо VХfile [i] буде дорівнює 0, то Vxfile [i +1] і VXfile [i +3] будуть адресою розміщення наступних команд (сторінка і зсув відповідно). Якщо ж VХfile [i] = 1, то наступний байт є командним і буде записаний за допомогою методу write () класу RAM в пам'ять.
Метод makingNull (обнуління пам'яті) не містить параметрів і значення, що повертається. Цей метод необхідний для обнулення масиву пам'яті і регістрів перед виконанням, для наочності.
Метод out (висновок масиву пам'яті) ...