| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [C] Моделирование гипотетического процессора Н6809 |
| Автор: Питерский 28.1.2010, 00:20 | ||
| Необходимо Смоделировать на Си, работу процессора 6809 фирмы Motorola 1.1 Задача, решаемая программой Организация процессора с одним аккумулятором. Создание программной модели процессора фирмы Motorola 6809. 1.2 Метод решения Содержимое входного файла копируется во внутренний массив, исполняющий роль памя-ти процессора. Организуется цикл выборки. В начале цикла в регистр IR заносится команда из памяти. Далее эта команда анализируется, затем выводится результат обработки команды и со-стояние PC, A, X,SP, Z. Переходим к следующей команде. Цикл продолжается до тех пор, пока не будет достигнут адрес возврата в операционную систему. 1.3 Требование к входным данным На входе программе передаётся двоичный файл. Файл имеет следующую структуру: Стартовый адрес (Start Address) Адрес загрузки блока 1 (Block 1 Load Address) Длина блока 1 (Block 1Length) Тело блока 1 (Block 1 body) . . . Адрес загрузки блока N (Block N Load Address) Длина блока N (Block N Length) Тело блока N (Block N body) Программа начинается со стартового адреса (2 байта). Следующие 2 байта –адрес загруз-ки (2 байта), за ним следует длина (2 байта). В случае отсутствия файла программа вы-даст соответствующее сообщение, и выполнение программы будет прервано. 1.4 Выходные данные Программа по записанным двоичным последовательностям восстанавливает команду и ис-полняет её. Результат исполнения выводится на экран в зависимости от заданного режи-ма, так же создается текстовой файл отчета. Вывод памяти может осуществляться много-кратно, притом адреса могут так же быть изменены пользователем. 2.1Подробное описание метода решения Программа запускается с параметрами командной строки. Первый параметр должен присутствовать всегда, это путь к входному файлу. Если входной параметр не задан или описан некорректно, выдается сведение об ошибке. В случае верной инициализации не-обходимого файла на экран выводится стартовый адрес и адрес загрузки, после чего пользователю предлагается меню, которое содержит следующие варианты дальнейших действий: 1 Regular run (полная прогонка программы) 2 Stepped run (пошаговая прогонка программы), 3 Exit (Выход) Режимы выполнения программы 1-2, в свою очередь содержать одинаковые подменю: 0 Breakpoint menu (меню только для полной прогонки, работает с точками остановки - запись, добавление, удаление) 1 Print RAM (печать памяти - от одного заданного пользователем адреса до другого) 2 Go (Полное/пошаговое исполнение) 3 Exit (Выход) и вывод на экран содержимого PC,A,X, IR, EAR, SP, Z и аккумулятора на каждом шаге/в начале и конце прокрутки (в зависимости от режима исполнения). В основе исполнения программы лежит функция Execute, в которой непосредственно идёт сравнение команд считанных из файла со стандартными командами процессора H6809. Идёт проверка на совпадение с командами, и дальнейшее их выполнение. Цикл исполняется до тех пор, пока не будет достигнут адрес возврата в операционную систему, который определён как кон-станта 1000h вот мой исходник, совсем чуть чуть:
------------- я не знаю как создать файл, и чтоб инфа из него читалась и забивалась в массив (память) не знаю, как будет происходить чтение данных из массива, с последующим выполнением поределённых команд. не знаю, как сделать менюшки. не знаю как сделать ЛОГ-файл, в который будет всё отправляться. Есть исходники с подробным описанием моделирования на Паскале, И есть готовые варианты моделей для процессора Н8000 фирмы Zilog, там используются Регистры Общего Назначения (РОНы). Буду рад всем идеям и предложениям! Спасибо, тем, кто дочитал до конца |
| Автор: cardinal 28.1.2010, 02:05 |
| Для начала: пользуйся на форуме тегом "код" (см. над боксом, в котором сообщение пишешь)... |
| Автор: Питерский 28.1.2010, 10:43 |
| Сделал, что дальше? |
| Автор: Stalbker 31.1.2010, 02:04 |
| ап! |