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