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