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