Project

General

Profile

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>