Getting Started with MicroTESK - PowerPC Edition » History » Version 18
Alexander Kamkin, 10/26/2016 02:17 PM
1 | 1 | Alexander Protsenko | h1. Getting Started with MicroTESK - PowerPC Edition |
---|---|---|---|
2 | |||
3 | 14 | Alexander Kamkin | h2. Начало работы с MicroTESK - PowerPC Edition |
4 | 11 | Alexander Kamkin | |
5 | 17 | Alexander Kamkin | # *Репозиторий проекта*: http://forge.ispras.ru/projects/microtesk-powerpc/repository |
6 | 1 | Alexander Protsenko | Создать локальную копию проекта: |
7 | 5 | Alexander Kamkin | <pre> |
8 | 1 | Alexander Protsenko | git clone https://forge.ispras.ru/git/microtesk-powerpc.git |
9 | </pre> |
||
10 | 17 | Alexander Kamkin | # *Сборка проекта* (необходимы Gradle 2.9 и Java 1.7, подробнее http://forge.ispras.ru/projects/microtesk/wiki/Installation_Guide) |
11 | 13 | Alexander Kamkin | Запустить сборку из корневого каталога: |
12 | 12 | Alexander Kamkin | ## с выполнением тестов: <pre>gradle build</pre> |
13 | 10 | Alexander Kamkin | ## без выполнения тестов: <pre>gradle assemble</pre> |
14 | 13 | Alexander Kamkin | # *Переменные среды* |
15 | Установить переменную @MICROTESK_HOME@: |
||
16 | 1 | Alexander Protsenko | <pre> |
17 | 13 | Alexander Kamkin | MICROTESK_HOME = каталог_установки/microtesk-powerpc/build/target |
18 | 12 | Alexander Kamkin | </pre> |
19 | 15 | Alexander Kamkin | # *Спецификации*: @microtesk-powerpc/src/main/arch/powerpc/model@ (спецификации арифметических инструкций: @powerpc_alu.nml@). |
20 | 13 | Alexander Kamkin | Собрать модель (из директория спецификаций): |
21 | 1 | Alexander Protsenko | <pre> |
22 | 13 | Alexander Kamkin | $MICROTESK_HOME/bin/compile.sh powerpc.nml mmu/powerpc.mmu --extension-dir ../extensions |
23 | 1 | Alexander Protsenko | </pre> |
24 | 13 | Alexander Kamkin | # *Тестовые шаблоны*: @microtesk-powerpc/src/main/arch/powerpc/templates@ (базовый шаблон для арифметических инструкций: @instruction_alu.rb@). |
25 | Запустить обработку шаблона (из директория шаблонов): |
||
26 | 10 | Alexander Kamkin | <pre> |
27 | 13 | Alexander Kamkin | $MICROTESK_HOME/bin/generate.sh powerpc instruction_alu.rb --code-file-prefix instruction_alu --code-file-extension s -v |
28 | 10 | Alexander Kamkin | </pre> |
29 | 1 | Alexander Protsenko | |
30 | 13 | Alexander Kamkin | После запуска шаблонов ассемблерный код и Tarmac-трасса будут находится в директории @../microtesk-powerpc/build/target@. |
31 | 1 | Alexander Protsenko | |
32 | 13 | Alexander Kamkin | h2. Особенности разработки спецификаций |
33 | 1 | Alexander Protsenko | |
34 | 17 | Alexander Kamkin | # *Комментарий к спецификации* |
35 | 6 | Alexander Kamkin | ## Название |
36 | 1 | Alexander Protsenko | <pre> |
37 | /* |
||
38 | Add Immediate D-form |
||
39 | </pre> |
||
40 | 13 | Alexander Kamkin | ## Расшифровка кодировки команды. Важно отметить, что в описании PowerPC биты упорядочены от 0 до 31; в спецификации их необходимо располагать в обратном порядке, как показано ниже: |
41 | 1 | Alexander Protsenko | <pre> |
42 | Encoding: | 31 16 | 15 11 | 10 6 | 5 0 | |
||
43 | | SI | RA | RT | | |
||
44 | | | | | 14 | |
||
45 | | 16 | 5 | 5 | 6 | |
||
46 | </pre> |
||
47 | 7 | Alexander Kamkin | ## Формат записи команды |
48 | 1 | Alexander Protsenko | <pre> |
49 | Format: |
||
50 | addi RT,RA,SI |
||
51 | |||
52 | </pre> |
||
53 | ## Описание |
||
54 | 7 | Alexander Kamkin | <pre> |
55 | 1 | Alexander Protsenko | Description: |
56 | if RA = 0 then RT <- EXTS(SI) |
||
57 | else RT <- (RA) + EXTS(SI) |
||
58 | The sum (RA|0) + SI is placed into register RT. |
||
59 | </pre> |
||
60 | ## Зависимости |
||
61 | <pre> |
||
62 | Special Registers Altered: |
||
63 | None |
||
64 | */ |
||
65 | </pre> |
||
66 | 17 | Alexander Kamkin | # *Спецификация инструкции* |
67 | 7 | Alexander Kamkin | ## Объявление инструкции |
68 | 1 | Alexander Protsenko | <pre> |
69 | op addi (rt: R, ra: R, si: SHORT) |
||
70 | </pre> |
||
71 | 13 | Alexander Kamkin | ## Инициализация данных инструкции |
72 | 1 | Alexander Protsenko | <pre> |
73 | init = { |
||
74 | OPCD = coerce(card(6), 14); |
||
75 | } |
||
76 | </pre> |
||
77 | 13 | Alexander Kamkin | ## Ассемблерный формат инструкции |
78 | 1 | Alexander Protsenko | <pre> |
79 | syntax = format("addi %s, %s, %d", rt.syntax, ra.syntax, si) |
||
80 | </pre> |
||
81 | 13 | Alexander Kamkin | ## Бинарная кодировка инструкции |
82 | 1 | Alexander Protsenko | <pre> |
83 | image = format("%16s%5s%5s%6s", si, ra.image, rt.image, OPCD) |
||
84 | </pre> |
||
85 | 13 | Alexander Kamkin | ## Семантика инструкции |
86 | 7 | Alexander Kamkin | <pre> |
87 | 1 | Alexander Protsenko | action = { |
88 | rt<31..0> = cast(WORD, cast(INT, ra) + cast(INT, sign_extend(WORD, cast(HWORD, si)))); |
||
89 | } |
||
90 | </pre> |
||
91 | 18 | Alexander Kamkin | # *Группировка инструкций* |
92 | 1 | Alexander Protsenko | <pre> |
93 | op PowerPCArithmetic = add |
||
94 | | add_d |
||
95 | | addi |
||
96 | | ori |
||
97 | </pre> |
||
98 | |||
99 | h2. Дополнительно |
||
100 | 7 | Alexander Kamkin | |
101 | 13 | Alexander Kamkin | Для включения трассировки в формате Tarmac нужно указать следующую опцию командной строки: |
102 | 8 | Alexander Kamkin | |
103 | 1 | Alexander Protsenko | <pre> |
104 | 9 | Alexander Kamkin | -tl,--tarmac-log Enables generation of Tarmac logs for simulation [works with --g], default=false |
105 | 1 | Alexander Protsenko | </pre> |
106 | 8 | Alexander Kamkin | |
107 | 13 | Alexander Kamkin | Либо добавить следующую строку в файл @microtesk-powerpc/src/main/etc/settings.xml@: |
108 | 8 | Alexander Kamkin | |
109 | 1 | Alexander Protsenko | <pre> |
110 | 13 | Alexander Kamkin | <setting name="tarmac-log" value="true"/> |
111 | 1 | Alexander Protsenko | </pre> |