Генерация симулятора процессора 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Генерация симулятора процессора



Для генерации симулятора ядра в виде С++ класса необходимо вызвать компилятор PPDL со следующими параметрами командной строки:

ppdl.exe dev_name.hdl – s out_file_name

 

Параметры:

dev_name.hdl – имя файла, содержащего PPDL-описание процессора

out_file_name – имя выходного файла (без расширения), содержащего класс, симулирующий работу процессора. В случае успеха компилятор сгенерирует два файла с именами out_file_name.h и out_file_name.cpp

Генерация ассемблера

Для генерации кода ассемблера (декодера инструкции) для встраивания в утилиту gnu assembler необходимо вызвать компилятор PPDL со следующими параметрами командной строки:

ppdl.exe dev_name.hdl – a out_file_name

 

Параметры:

dev_name.hdl – имя файла, содержащего PPDL-описание процессора

out_file_name – имя выходного файла (без расширения), содержащего набор функций для декодирования инструкций ассемблера

 

Генерация дизассемблера

Для генерации кода ассемблера (декодера инструкции) для встраивания в утилиту gnu assembler необходимо вызвать компилятор PPDL со следующими параметрами командной строки:

ppdl.exe dev_name.hdl – d out_file_name

 

Параметры:

dev_name.hdl – имя файла, содержащего PPDL-описание процессора

out_file_name – имя выходных файлов (out_file_name.h и out_file_name.cpp), содержащих описание С++ класс для описания дизассемблера.

 

       В сгенерированном дизассемблере следует использовать функцию:

char* disasm(char *bin,int& size);.

 

       Данная функция принимает на вход указатель на бинарный код команды и возвращает ассемблерную мнемонику команды и размер декодированной бинарной команды (в байтах) в переменную size.

Генерация XML файла описания архитектуры

Компилятор PPDL позволяет сгенерировать XML файл описания архитектуры. Для генерации XML файла необходимо вызвать компилятор PPDL со следующими параметрами командной строки:

ppdl.exe dev_name.hdl –x out_file_name

Параметры:

dev_name.hdl – имя файла, содержащего PPDL-описание процессора

out_file_name – имя выходного XML файла с расширением, например nmproc.xml


 

Интерфейс симулятора

 

Любой симулятор, генерируемый программой ppdl – это класс, унаследованный от стандартного класса tDevice. Класс tDevice имеет стандартный интерфейс, предоставляющий отладчику возможность управлять процессом выполнения программного кода на процессоре. В данной главе приведены некоторые функции класса tDevice, использующиеся для работы с отладчиком.

 

1.3 tDProcCfg* GetCfg()

Функция возвращает указатель на структуру процессора tDProcCfg. Данная структура содержит информацию об архитектуре процессора. Список элементов данной структуры приведен в таблице:

Название описание
int nreg; Количество внешних регистров процессора
const tDRegister *regs Массив описания регистров
int nbuses Количество шин памяти процессора
сonst tDMemBus *bus Массив структур tDMemBus, описывающие параметры шины
int nflags Количество флагов процессора
tDFlag *flags Массив структур tDFlag описывающих параметры флагов

 

 

В следующей таблице приведены элементы структуры tDRegister

Название Описание
const char *name Ассемблерное имя регистра
int type Тип регистра
int arrsize Размер массива регистра (0, если определен не массив регистров)

 

 

В следующей таблице приведены элементы структуры tDMemBus

Название Описание
const char *name Имя шины
int asize Размер шины адреса в битах
int dsize Размер шины данных в битах

 

В следующей таблице приведены элементы структуры tDProcFlag

Название Описание
char   *name Имя флага
const tDRegister* regnum Указатель на регистр, который содержит данный флаг
int    bit Номер бита в регистре

 

 

1.4 void getmem(void *mem,int busnum,int addr,int size_in_words);

Функция копирует size _ in _ words слов из памяти процессора, подключенной к шине busnum по адресу addr в массив mem.

 

1.5 void setmem(void *mem,int busnum,int addr,int size_in_words);

Функция копирует size _ in _ words слов из массива mem в память процессора, подключенной к шине busnum по адресу addr

 

 

1.6 int DisAssembly(char *str,int busnum,int addr,int size);

 

Функция копирует в строку str дизассемблированный код подпрограммы по адресу addr памяти на шине busnum размером size слов в формате:  адрес инструкция шестнадцатеричный код команды.

 

 

1.7 int set_bp(unsigned long addr);

Функция устанавливает точку останова по адресу addr.

 

Возвращаемое значение

1 – если точка останова была поставлена

0 – в случае ошибки

 

1.8 int clear_bp(unsigned long addr)

Функция удаляет точку останова по адресу addr.

Возвращаемое значение

1 – если точка останова была успешно удалена

0 – в случае ошибки

 

1.9 int start();

Функция запускает симулятор на исполнение

Возвращаемое значение

1 – если симулятор был запущен на исполнение

0 – в случае ошибки

 

1.10int stop();

Функция останавливает работу симулятора

Возвращаемое значение

1 – если симулятор был успешно остановлен

0 – в случае ошибки

 

Int isRun()

Функция возвращает ненулевое значение, если симулятор запущен на исполнение, 0 в противном случае

 



Поделиться:


Последнее изменение этой страницы: 2021-07-18; просмотров: 33; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.141.27.244 (0.01 с.)