Project

General

Profile

Getting Started with MicroTESK - PowerPC Edition » History » Version 13

Alexander Kamkin, 10/26/2016 02:01 PM

1 1 Alexander Protsenko
h1. Getting Started with MicroTESK - PowerPC Edition
2
3 6 Alexander Kamkin
h2. Начало работы с @MicroTESK - PowerPC Edition@
4 11 Alexander Kamkin
5 13 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 13 Alexander Kamkin
# Сборка проекта (необходимы Gradle 2.9 и Java 1.8, подробнее http://forge.ispras.ru/projects/microtesk/wiki/Installation_Guide)
11
Запустить сборку из корневого каталога: 
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 13 Alexander Kamkin
# *Спецификации*: @microtesk-powerpc/src/main/arch/powerpc/model@ (арифметические инструкции: @powerpc_alu.nml@).
20
Собрать модель (из директория спецификаций):
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 6 Alexander Kamkin
# Описание инструкции
35
## Название
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
# Реализация
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 13 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>