Getting Started with MicroTESK - PowerPC Edition » History » Version 19
Alexander Protsenko, 10/26/2016 03:40 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 | 19 | Alexander Protsenko | Add Immediate |
39 | 1 | Alexander Protsenko | </pre> |
40 | 13 | Alexander Kamkin | ## Расшифровка кодировки команды. Важно отметить, что в описании PowerPC биты упорядочены от 0 до 31; в спецификации их необходимо располагать в обратном порядке, как показано ниже: |
41 | 1 | Alexander Protsenko | <pre> |
42 | 19 | Alexander Protsenko | Encoding: | 31 16 | 15 11 | 10 6 | 5 0 | |
43 | | SI | RA | RT | | |
||
44 | | | | | 001110 | |
||
45 | | 16 | 5 | 5 | 6 | |
||
46 | 7 | Alexander Kamkin | </pre> |
47 | 1 | Alexander Protsenko | ## Формат записи команды |
48 | <pre> |
||
49 | Format: |
||
50 | 19 | Alexander Protsenko | addi RT,RA,SIMM |
51 | 1 | Alexander Protsenko | </pre> |
52 | ## Описание |
||
53 | <pre> |
||
54 | Description: |
||
55 | 19 | Alexander Protsenko | if rA=0 then a ← 64(0) else a ← (rA) |
56 | rD ← a + EXTS(SIMM) |
||
57 | |||
58 | If rA=0, the sign-extended value of the SIMM field is placed into rD. |
||
59 | If rA≠0, the sum of the contents of rA and the sign-extended value of field SIMM is placed into rD. |
||
60 | 1 | Alexander Protsenko | </pre> |
61 | ## Зависимости |
||
62 | <pre> |
||
63 | Special Registers Altered: |
||
64 | None |
||
65 | */ |
||
66 | </pre> |
||
67 | # *Спецификация инструкции* |
||
68 | 7 | Alexander Kamkin | ## Объявление инструкции |
69 | 1 | Alexander Protsenko | <pre> |
70 | 19 | Alexander Protsenko | op addi (rt: R, ra: R, simm: SHORT) |
71 | 1 | Alexander Protsenko | </pre> |
72 | 13 | Alexander Kamkin | ## Инициализация данных инструкции |
73 | 1 | Alexander Protsenko | <pre> |
74 | init = { |
||
75 | 19 | Alexander Protsenko | OPCD = coerce(card(6), 0b001110); |
76 | 1 | Alexander Protsenko | } |
77 | </pre> |
||
78 | ## Ассемблерный формат инструкции |
||
79 | <pre> |
||
80 | 19 | Alexander Protsenko | syntax = format("addi %s, %s, %d", rt.syntax, ra.syntax, simm) |
81 | 1 | Alexander Protsenko | </pre> |
82 | ## Бинарная кодировка инструкции |
||
83 | <pre> |
||
84 | image = format("%16s%5s%5s%6s", si, ra.image, rt.image, OPCD) |
||
85 | 13 | Alexander Kamkin | </pre> |
86 | 1 | Alexander Protsenko | ## Семантика инструкции |
87 | <pre> |
||
88 | action = { |
||
89 | 19 | Alexander Protsenko | ra.action; // output: gpr_reg_number |
90 | if gpr_reg_number == coerce(card(5), 0) then |
||
91 | temp = 0; |
||
92 | else |
||
93 | temp = ra; |
||
94 | endif; |
||
95 | |||
96 | rt<31..0> = cast(WORD, cast(INT, temp) + cast(INT, sign_extend(WORD, cast(HWORD, simm)))); |
||
97 | 1 | Alexander Protsenko | } |
98 | </pre> |
||
99 | 18 | Alexander Kamkin | # *Группировка инструкций* |
100 | 1 | Alexander Protsenko | <pre> |
101 | op PowerPCArithmetic = add |
||
102 | | add_d |
||
103 | | addi |
||
104 | | ori |
||
105 | </pre> |
||
106 | |||
107 | h2. Дополнительно |
||
108 | 7 | Alexander Kamkin | |
109 | 13 | Alexander Kamkin | Для включения трассировки в формате Tarmac нужно указать следующую опцию командной строки: |
110 | 8 | Alexander Kamkin | |
111 | 1 | Alexander Protsenko | <pre> |
112 | 9 | Alexander Kamkin | -tl,--tarmac-log Enables generation of Tarmac logs for simulation [works with --g], default=false |
113 | 1 | Alexander Protsenko | </pre> |
114 | 8 | Alexander Kamkin | |
115 | 13 | Alexander Kamkin | Либо добавить следующую строку в файл @microtesk-powerpc/src/main/etc/settings.xml@: |
116 | 8 | Alexander Kamkin | |
117 | 1 | Alexander Protsenko | <pre> |
118 | 13 | Alexander Kamkin | <setting name="tarmac-log" value="true"/> |
119 | 1 | Alexander Protsenko | </pre> |