Open-Source Projects: Issueshttps://forge.ispras.ru/https://forge.ispras.ru/favicon.ico?16490126692014-06-18T11:42:22ZOpen-Source Projects
Redmine MicroTESK - Bug #4996 (Closed): [translator] It should be possible to define the "instruction" op...https://forge.ispras.ru/issues/49962014-06-18T11:42:22ZAndrei Tatarnikovandrewt@ispras.ru
<p>The current version has an unreasonable limitation: the "instruction" operation (root) can be defined as an AND rule only. This should be changed. It should be allowed to define the "instruction" operation as an OR rule.</p> MicroTESK - Task #4900 (Rejected): Printing information on the model should be possiblehttps://forge.ispras.ru/issues/49002014-05-07T07:51:14ZAndrei Tatarnikovandrewt@ispras.ru
<p>Нужно предоставить возможность выводить информацию о модели на экран и в файл. Эта информация может понадобиться пользователю при написании тестовых шаблонов. Для этого Артемием Утехиным был создан файл make_doc.rb (он не очень хорошо написан). Также каждая модель умеет печатать информацию о себе в консоль (метод printInformation). Нужно довести до ума эту функциональность и предоставить возможность пользователю выводить информацию (отдельный скрипт или параметр командной строки), а make_doc.rb убрать за ненадобностью (т.к. гораздо удобнее иметь эту логику в Java-коде).</p> Fortress - Task #4693 (Closed): [data] Реализации операций над битовыми векторами (BitVector)https://forge.ispras.ru/issues/46932014-02-13T11:58:00ZAndrei Tatarnikovandrewt@ispras.ru
<p>Необходима реализация стандартного набора операций над битовыми векторами (BitVector) включая побитовые операции, логические операции и часто используемые арифметические операции. Подобная реализация существует в виде наброска в Model API MicroTESK. Ещё нужно перенести в Fortress, унифицировать, расширить и создать для неё модульные тесты.</p> MicroTESK - Task #4283 (Closed): [translator] Support for custom attributes in operations and add...https://forge.ispras.ru/issues/42832013-07-01T10:24:28ZAndrei Tatarnikovandrewt@ispras.ru
<p>Транслятор и модель должны поддерживатить использование <strong>кастомных аттрибутов</strong>. Например, в приведённом ниже куске используется аттрибут loop, который организует цикл путём рекурсии. Для трансляции модели MIPS требуется эта возможность.</p>
<pre>
op CLZ(rd : index, rs : REG_IND_ZERO)
syntax = format ("CLZ %d,%s", rd, rs.syntax)
image = format ("011100%s%5b%5b00000100000", rs.image, rd, rd)
action = {
tmp_signed_byte = 31;
GPR [rd] = 32;
loop;
}
loop = {
if tmp_signed_byte >= 0 then
if ( rs < tmp_signed_byte..tmp_signed_byte > == 0 ) then
tmp_signed_byte = tmp_signed_byte - 1;
else
GPR [ rd ] = 31 - tmp_signed_byte;
tmp_signed_byte = -1;
endif;
loop;
endif;
}
</pre> MicroTESK - Bug #4281 (Closed): [translator] Support for aliases in memory (aka mem) definitions.https://forge.ispras.ru/issues/42812013-07-01T06:29:20ZAndrei Tatarnikovandrewt@ispras.ru
<p>Подобные конструкции сейчас не поддерживаются транслятором Sim-nML:</p>
<pre>
mem tmp_signed_half_word [1, int(16)]
mem tmp_signed_half_word_A0 [1, int(8)] alias = tmp_signed_half_word[8]
</pre>
<p>Это одна из причин, по которой не удаётся оттранслировать спецификацию процессора MIPS.</p> MicroTESK - Bug #4161 (Rejected): Observing the design state via addressing modeshttps://forge.ispras.ru/issues/41612013-05-08T16:37:18ZAndrei Tatarnikovandrewt@ispras.ru
<p>Нужно сделать возможность читать данные из модели при помощи обектов режимов адресации. Когда мы будем решать ограничения для инструкций, мы не будем знать где именно лежат значения параметров. У нас будут только режимы адресации, параметризированные некими константами. Нам нужно прочитать оттуда входные значения. Т.к. нужно через State Observer полутить туда доступ, создав объект соотвествующего Addressing Mode'а.</p> MicroTESK - Task #4116 (Closed): [model] Lazy memory allocation in memory modelshttps://forge.ispras.ru/issues/41162013-04-16T17:46:16ZAndrei Tatarnikovandrewt@ispras.ru
<p>При моделировании линейки памяти сейчас создаётся массив (ArrayList) соответствующего размера. При этом, если линейка большой длины, программа расходует всю доступную память и падает. Нужно сделать, чтобы память свыше определённого размера (например, 1 МБ) выделялась по требованию (при обращению).</p>
<p>public static final MemoryBase M = new MemoryBase(EMemoryKind.MEM, "M", byte_t, (int)Math.pow(2, 10));</p> MicroTESK - Bug #4109 (Closed): [template] Update needed: Test templates do not work after change...https://forge.ispras.ru/issues/41092013-04-15T06:30:24ZAndrei Tatarnikovandrewt@ispras.ru
<p>У меня не запускаются скрипты. Ревизия последняя. Вот что выводится в консоль:</p>
<p>andrewt@uragan:~/Documents/ISPRAS/src/microtesk/trunk/microtesk> svn update<br />Updating '.':<br />At revision 1177.<br />andrewt@uragan:~/Documents/ISPRAS/src/microtesk/trunk/microtesk> sh generate.sh arm dist/scripts/templates/templates/arm_demo.rb <br />Creating model object<br />Model object created<br />' doesn't exist. File '/home/andrewt/Documents/ISPRAS/src/microtesk/trunk/microtesk/dist/scripts/templates/templates/arm_demo.rb<br />generate.sh: line 3: $'\r': command not found</p> MicroTESK - Task #4104 (Closed): [translator] Reset VAR values after an instruction callhttps://forge.ispras.ru/issues/41042013-04-13T20:16:19ZAndrei Tatarnikovandrewt@ispras.ru
<p>Согласно спецификации переменные (объявлены ключевым словом var) не сохраняют своих значений между вызовами инструкции (в отличие от reg-ов и mem-ов). Нужно сбрасывать их значения, что бы там не скапливался мусор, который может привести к некорректным результатам.</p> MicroTESK - Task #4061 (New): Support for endiannesshttps://forge.ispras.ru/issues/40612013-04-03T09:36:03ZAndrei Tatarnikovandrewt@ispras.ru
<p>Сейчас порядок байт не учитывается при моделировании. Он принимается за little-endian по умолчанию.</p>
<p>В моделях, предоставленных IIT Kanpur порядок байт задаётся ключом byte_order. Это выглядит так:</p>
<p>let byte_order = "little" <br />let byte_order = "big"</p>
<p>Нам тоже нужно учитывать порядок байт при моделировании модели.</p> MicroTESK - Bug #4015 (Closed): [translator] Shift and Rotate operations: negative distancehttps://forge.ispras.ru/issues/40152013-03-17T15:00:02ZAndrei Tatarnikovandrewt@ispras.ru
<p>Для данных, моделируемых через RawData, не будут работать операторы сдвига и поворота, если второй операнд (на сколько сдвигаем/поворачиваем) будет отрицательным.</p> MicroTESK - Bug #4014 (Closed): Concatenation in left hand side expressionshttps://forge.ispras.ru/issues/40142013-03-17T14:41:39ZAndrei Tatarnikovandrewt@ispras.ru
<p>Логика выражений типа M [0] :: M [1] = R [4] некорректна. Она должна означать:</p>
<p>M [0] = R [4];<br />M [1] = R [4]</p>
<p>Вот что написано в драфте Фредерикса:</p>
<p><<<<<<<<<<<<<<<<<<<<<<<br />4.10 Concatenation of Values</p>
<p>The :: operator allows the concatenation of arbitrary expressions; it is de ned on the left side of<br />assignments, too (if the expressions denote memory locations only, of course). For example,<br />M [0] :: M [1] = R [4]<br />assigns the value of R [4] to the locations M [0] and M [1]. The order is the same as used in sequences<br />of locations, i.e., essentially unde ned.</p>
<blockquote><blockquote><blockquote><blockquote><blockquote><blockquote><blockquote><blockquote><blockquote><blockquote><blockquote><blockquote><blockquote><blockquote><blockquote><blockquote><blockquote><blockquote><blockquote><blockquote><blockquote><blockquote><blockquote><blockquote>
</blockquote></blockquote></blockquote></blockquote></blockquote></blockquote></blockquote></blockquote></blockquote></blockquote></blockquote></blockquote></blockquote></blockquote></blockquote></blockquote></blockquote></blockquote></blockquote></blockquote></blockquote></blockquote></blockquote></blockquote>
<p>Нужно найти решение.</p> MicroTESK - Bug #3996 (Closed): [translator] Support for long types (64-bit) in expressionshttps://forge.ispras.ru/issues/39962013-03-11T09:47:24ZAndrei Tatarnikovandrewt@ispras.ru
<p>Сейчас не поддерживаются числа больше 32-х бит (int). При трансляции встречаются выражения, использующие 64-битные константы и транслирующиеся напрямую в Java код (без упаковки в классы Data/RawData). Такие выражения мы не можем оттраслировать т.к. не используем тип long при трансляции в Java. Нужно его использовать.</p>
<p>if (sum < 0xffffffff80000001) then <br /> GPR[rd] = 0x80000001;<br /> CPSR<27..27> = 1;<br />else<br /> GPR[rd] = op1 - op2;<br />endif;</p> MicroTESK - Bug #3995 (Closed): [translator] Support for bitfields using non-constant expressionshttps://forge.ispras.ru/issues/39952013-03-11T09:39:51ZAndrei Tatarnikovandrewt@ispras.ru
<p>Для правильной индентификации типов при обращении к битовым полям вычисляется размер поля (на этапе трансляции).<br />Индексные выражения, как правило, - статически вычисляемые константные выражения. Однако, возможны следующие варианты:</p>
<p>shifter_carry_out = GPR[r]<amount-1..amount-1>;</p>
<p>Такой код не будет транслироваться т.к. amount - не константа. Однако, размер поля можно посчтитать и видно, что он будет равен 1.<br />В модели ARM встречается несколько подобных симметричных конструкций. Для них можно и НУЖНО вычислять размер поля.</p> MicroTESK - Task #3988 (Rejected): Support for forward definitions in the nML translatorhttps://forge.ispras.ru/issues/39882013-03-04T09:18:49ZAndrei Tatarnikovandrewt@ispras.ru
<p>Сейчас forward definitions не поддерживаются в Sim-nML трансляторе. Т.е. если код ссылается на какой-либо внешний элемент,<br />то он должен быть определён ранее в коде. Например, следующий код не будет транслироваться т.к. OR-rule setU ссылается на элементы setUon и setUoff, которые ещё не определены:</p>
<p>mode setU = setUon | setUoff</p>
<p>mode setUon() = 0b1<br /> syntax = "+" <br /> image = "1" <br /> action = {<br /> }</p>
<p>mode setUoff() = 0b0<br /> syntax = "-" <br /> image = "0" <br /> action = {<br /> }</p>