Actions
Getting Started with MicroTESK - PowerPC Edition¶
- Table of contents
- Getting Started with MicroTESK - PowerPC Edition
Начало работы с MicroTESK - PowerPC Edition¶
- Репозиторий проекта: http://forge.ispras.ru/projects/microtesk-powerpc/repository
Создать локальную копию проекта:git clone https://forge.ispras.ru/git/microtesk-powerpc.git
- Сборка проекта (необходимы Gradle 2.9 и Java 1.7, подробнее http://forge.ispras.ru/projects/microtesk/wiki/Installation_Guide)
Запустить сборку из корневого каталога:- с выполнением тестов:
gradle build
- без выполнения тестов:
gradle assemble
- с выполнением тестов:
- Переменные среды
Установить переменнуюMICROTESK_HOME
:MICROTESK_HOME = каталог_установки/microtesk-powerpc/build/target
- Спецификации:
microtesk-powerpc/src/main/arch/powerpc/model
(спецификации арифметических инструкций:powerpc_alu.nml
).
Собрать модель (из директория спецификаций):$MICROTESK_HOME/bin/compile.sh powerpc.nml mmu/powerpc.mmu --extension-dir ../extensions
- Тестовые шаблоны:
microtesk-powerpc/src/main/arch/powerpc/templates
(базовый шаблон для арифметических инструкций:instruction_alu.rb
).
Запустить обработку шаблона (из директория шаблонов):$MICROTESK_HOME/bin/generate.sh powerpc instruction_alu.rb --code-file-prefix instruction_alu --code-file-extension s -v
После запуска шаблонов ассемблерный код и Tarmac-трасса будут находится в директории ../microtesk-powerpc/build/target
.
Особенности разработки спецификаций¶
- Комментарий к спецификации
- Название
/* Add Immediate
- Расшифровка кодировки команды. Важно отметить, что в описании PowerPC биты упорядочены от 0 до 31; в спецификации их необходимо располагать в обратном порядке, как показано ниже:
Encoding: | 31 16 | 15 11 | 10 6 | 5 0 | | SI | RA | RT | | | | | | 001110 | | 16 | 5 | 5 | 6 |
- Формат записи команды
Format: addi RT,RA,SIMM
- Описание
Description: if rA=0 then a ← 64(0) else a ← (rA) rD ← a + EXTS(SIMM) If rA=0, the sign-extended value of the SIMM field is placed into rD. If rA≠0, the sum of the contents of rA and the sign-extended value of field SIMM is placed into rD.
- Зависимости
Special Registers Altered: None */
- Название
- Спецификация инструкции
- Объявление инструкции
op addi (rt: R, ra: R, simm: SHORT)
- Инициализация данных инструкции
init = { OPCD = coerce(card(6), 0b001110); }
- Ассемблерный формат инструкции
syntax = format("addi %s, %s, %d", rt.syntax, ra.syntax, simm)
- Бинарная кодировка инструкции
image = format("%16s%5s%5s%6s", si, ra.image, rt.image, OPCD)
- Семантика инструкции
action = { ra.action; // output: gpr_reg_number if gpr_reg_number == coerce(card(5), 0) then temp = 0; else temp = ra; endif; rt<31..0> = cast(WORD, cast(INT, temp) + cast(INT, sign_extend(WORD, cast(HWORD, simm)))); }
- Объявление инструкции
- Группировка инструкций
op PowerPCArithmetic = add | add_d | addi | ori
Дополнительно¶
Для включения трассировки в формате Tarmac нужно указать следующую опцию командной строки:
-tl,--tarmac-log Enables generation of Tarmac logs for simulation [works with --g], default=false
Либо добавить следующую строку в файл microtesk-powerpc/src/main/etc/settings.xml
:
<setting name="tarmac-log" value="true"/>
Updated by Alexander Kamkin about 8 years ago · 20 revisions