<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://www.wikicshse.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9A%D0%A1%3A2015%3A%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82%3Ajit</id>
	<title>КС:2015:Проект:jit - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://www.wikicshse.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9A%D0%A1%3A2015%3A%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82%3Ajit"/>
	<link rel="alternate" type="text/html" href="https://www.wikicshse.ru/index.php?title=%D0%9A%D0%A1:2015:%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82:jit&amp;action=history"/>
	<updated>2026-06-06T13:30:48Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://www.wikicshse.ru/index.php?title=%D0%9A%D0%A1:2015:%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82:jit&amp;diff=1144&amp;oldid=prev</id>
		<title>imported&gt;Rkovalev: Migrated current public revision from wiki.cs.hse.ru</title>
		<link rel="alternate" type="text/html" href="https://www.wikicshse.ru/index.php?title=%D0%9A%D0%A1:2015:%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82:jit&amp;diff=1144&amp;oldid=prev"/>
		<updated>2015-09-25T10:09:18Z</updated>

		<summary type="html">&lt;p&gt;Migrated current public revision from wiki.cs.hse.ru&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Что это за проект ==&lt;br /&gt;
&lt;br /&gt;
=== Введение ===&lt;br /&gt;
JIT компиляция (Just In Time, ещё называют динамической) - это компиляция виртуальной машиной программы на интерпретируем байткоде в машинный код в процессе её выполнения. Позволяет увеличить скорость выполнения интерпретируемой программы. Применяется, в частности, в виртуальных машинах pypy и java hotspot.&lt;br /&gt;
&lt;br /&gt;
=== Что требуется ===&lt;br /&gt;
Вам предлагается реализовать JIT компиляцию регулярных выражений, поддерживаемых re2, в машинный код x86-64.&lt;br /&gt;
&lt;br /&gt;
=== Слайды ===&lt;br /&gt;
[https://yadi.sk/d/ymlaks89jK69x Лежат тут.]&lt;br /&gt;
== Чему вы научитесь ==&lt;br /&gt;
1. Узнаете, как устроена JIT компиляция.&lt;br /&gt;
&lt;br /&gt;
2. Научитесь профилировать код и искать узкие места в производительности.&lt;br /&gt;
&lt;br /&gt;
3. Научитесь писать интерпретаторы с JIT.&lt;br /&gt;
&lt;br /&gt;
== Начальные требования ==&lt;br /&gt;
1. Технический английский язык.&lt;br /&gt;
&lt;br /&gt;
2. Знание C++.&lt;br /&gt;
&lt;br /&gt;
3. Любознательность.&lt;br /&gt;
&lt;br /&gt;
== Критерии оценивания ==&lt;br /&gt;
&lt;br /&gt;
=== Требования на зачет в конце 1-го модуля ===&lt;br /&gt;
Нужно написать библиотеку, которая использует [https://github.com/google/re2/ re2] для синтаксического разбора регулярных выражений, получает из неё представление регулярного выражения в виде инструкций для виртуальной машины в re2 и может при помощи [http://yasm.tortall.net/ libyasm], [http://sljit.sourceforge.net/ sljit] или [http://www.gnu.org/software/libjit/ libjit] компилировать в x86_64 и запускать какое-то непустое подмножество этих инструкций (LLVM плохо, т.к. компиляция должна быть максимально быстрой). Полученная конструкция работает корректно (re2 и re2jit на поддерживаемых регулярных выражениях дают один и тот же результат). &lt;br /&gt;
&lt;br /&gt;
Пример того, как можно запустить JIT код, описан в [http://eli.thegreenplace.net/2013/11/05/how-to-jit-an-introduction этой статье].&lt;br /&gt;
&lt;br /&gt;
=== Итоговая оценка ===&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;4 балла&amp;#039;&amp;#039;&amp;#039;. Реализованы требования на зачёт в конце первого модуля.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;8 баллов&amp;#039;&amp;#039;&amp;#039;. Все инструкции re2 VM компилируются в JIT.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;+N баллов&amp;#039;&amp;#039;&amp;#039;. N = 8 * max(0, aver(1 - T&amp;lt;sub&amp;gt;re2jit&amp;lt;/sub&amp;gt; / T&amp;lt;sub&amp;gt;re2&amp;lt;/sub&amp;gt;)) за обгон re2 на предложенных тестах (постараемся выбрать максимально приближенные к реальности).&lt;/div&gt;</summary>
		<author><name>imported&gt;Rkovalev</name></author>
	</entry>
</feed>