Project

General

Profile

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>