Программная модель вычислительной системы. Эмулятор - Курсовая работа

бесплатно 0
4.5 97
Структура микропроцессорной системы. Длина объектного кода команды. Входные и выходные данные. Представление чисел в эмуляторе. Команды, работающие со стеком и памятью. Запись данных в адрес памяти. Состояние ячеек памяти. Алгоритм загрузки программы.


Аннотация к работе
В настоящее время в связи с бурным развитием компьютерных технологий, все большее предпочтение среди программистов получают языки высокого уровня; однако, во многих случаях, программы, написанные на таких языках, теряют в быстродействии по сравнению с машинно-ориентированными языками (ассемблерами), а размер программы, написанной на языке высокого уровня почти всегда превышает (причем значительно) размер программы, написанной на ассемблере.В процессе выполнения проекта необходимо создать кросс-эмулятор - программную модель ЭВМ с заданной архитектурой. Задана структура микропроцессорной системы (№3): Объем оперативной памяти - 4096 байт. Команды имеют длину один или два байта. Биты 4-7 и второй байт используются для здания адреса памяти, где находится операнд или константа.Входными данными для эмулятора является объектный файл, сгенерированный ассемблером. Объектный файл содержит программу и указания эмулятору, как необходимо ее загружать. Программа на ассемблере помимо команд процессора содержит также две специальные директивы: ORG - указание на адрес в памяти, куда необходимо загружать последующие команды, и DATA - задание константы.В цикле читаем из файла по два байта. В зависимости от первого байта, который является либо признаком адреса, либо признаком данных, второй байт используем по назначению: если первый байт является признаком адреса, то начинаем с запоминания этого адреса, а если первый байт является признаком данных, то помещаем в текущую ячейку памяти. Выбираем из памяти команду, адрес которой хранится в счетчике адреса команд.Методы класса Processor: public Processor(Memory ram) - связывает процессор с памятью. private void clear() - сбрасывает все значения элементов в процессоре и памяти. public void execute() - метод выполняет всю программу: пока не достигнут конец программы. public void EXECUTEONECOM() - выполняет одну команду. private boolean TWOBYTES(int c) - определяет сколько байт в команде. public boolean LOADOBJECTFILE(DATAINPUT f) - считывает указанный объектный файл, загружает программу в память и устанавливает адрес последней команды (это необходимо сделать, т. к. иначе нельзя определить во время выполнения программы когда достигнут ее конец). Если m = адрес, то: a. если это начало программы (flag = 0), то установить счетчик команд в b b. если flag = данные, вернуть сообщение об ошибке, конец c. flag < адрес, i < b d. переход к п. ADD Адрес 0000 память[адрес]=стек[0] память[адрес] proc.stack.peek() ram.read(reg); SETFLAGS(t); ram.write(t & 0XFF, reg); ADC Адрес 0001 память[адрес]=стек[0] память[адрес] флаг переполнения proc.stack.peek() ram.read(reg) proc.overflow; SETFLAGS(t); ram.write(t & 0XFF, reg); SUB Адрес 0010 память[адрес]=стек[0]-память[адрес] proc.stack.peek()-ram.read(reg); SETFLAGS(t); ram.write(t & 0XFF, reg);Для тестирования программы написан пример программы, в которой используются команды, работающие со стеком, памятью, а также специальные команды ORG и DATA. Stack stack; public int PC; // program counter указывает на адрес след. команды public int RGCOM; // command register хранит код текущей команды intend; // конец программы int zero; } public void EXECUTEONECOM() {if(error == 0) {int first = ram.read(PC); //ADD case 0: t = proc.stack.peek() ram.

План
Содержание

Введение

1. Постановка задачи

2. Описание входных и выходных данных

3. Разработка алгоритма

4. Разработка эмулятора

5. Отладка и тестирование

Заключение

Библиографический список

Приложение

Введение
В настоящее время в связи с бурным развитием компьютерных технологий, все большее предпочтение среди программистов получают языки высокого уровня; однако, во многих случаях, программы, написанные на таких языках, теряют в быстродействии по сравнению с машинно-ориентированными языками (ассемблерами), а размер программы, написанной на языке высокого уровня почти всегда превышает (причем значительно) размер программы, написанной на ассемблере. Таким образом, для написания быстродействующих компактных программ (например, драйверов, компьютерных вирусов, резидентных программ и т. п.) следует использовать языки низкого уровня. Несмотря на развитие языков программирования высокого уровня, ассемблер нельзя назвать мертвым, изжившим себя языком, так как каким бы хорошим ни был оптимизирующий компилятор, он не заменит хорошего программиста на ассемблере; более того, ассемблер часто используется именно там, где необходимо обеспечить максимальное быстродействие или работу на «машинном» уровне.

Эмулятор - это программа, позволяющая запускать и отлаживать программы, созданные для оборудования, отличного от стандартного ПК. Отладчик содержит в своем составе процедуры моделирования операций, выполняемых в ходе функционирования.

1.
Заказать написание новой работы



Дисциплины научных работ



Хотите, перезвоним вам?