<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
	<title>Хабрахабр:  Метки / промежуточный код</title>
	<link>http://habrahabr.ru/rss/tag/промежуточный код/</link>
	<description><![CDATA[]]></description>
	<language>ru</language>
	<managingEditor>editor@habrahabr.ru</managingEditor>
	<generator>habrahabr.ru</generator>
	<pubDate>Sun, 12 Feb 2012 00:28:23 GMT</pubDate>
	<lastBuildDate></lastBuildDate>
	<image>
		<link>http://habrahabr.ru/</link>
		<url>http://habrahabr.ru/i/logo.gif</url>
		<title>Хабрахабр</title>
	</image>
	
			
		<item>		
			<title><![CDATA[Программирование / Компиляция. 6: промежуточный код]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/programming/99592/</guid>
			<link>http://habrahabr.ru/blogs/programming/99592/</link>			
			<description><![CDATA[Первый этап — <a href="http://habrahabr.ru/blogs/programming/99397/">разбор синтаксиса</a> нашего джей-скрипа — пройден; подбираемся к генерации кода.<br/>
<br/>
Начнём с генерации п-кода (промежуточного переносимого псевдокода) — нечто вроде «абстрактного машинного языка». Его выбирают так, чтобы <ul>
<li>его было легко генерировать;</li>
<li>его было легко обрабатывать.</li>
</ul>Обработка п-кода — это, как правило, его переработка в исполнимый машинно-зависимый код. Тем не менее, можно ограничиться лишь генерацией п-кода, и объявить его готовой скомпилированной программой. Запуск такой программы будет, по сути, интерпретацией п-кода. У этого подхода всё больше и больше сторонников; так что и мы для начала ограничимся компиляцией в п-код.<br/>
<br/>
<h3>Далее в посте:</h3><ol>
<li>Выбор кода</li>
<li>Компиляция</li>
<li>Выполнение</li>
<li>Backpatching</li>
</ol><div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/programming/99592/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Wed, 21 Jul 2010 20:18:43 GMT</pubDate>
			<author>tyomitch</author>
			<category>компиляция</category><category>промежуточный код</category><category>генерация кода</category>
		</item>
		
		
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[Программирование / Обзор LLVM]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/programming/47878/</guid>
			<link>http://habrahabr.ru/blogs/programming/47878/</link>			
			<description><![CDATA[<a href="http://llvm.org/">LLVM</a> (Low Level Virtual Machine)&nbsp;— это универсальная система анализа, трансформации и оптимизации программ или, как её называют разработчики, «compiler infrastucture».<br/>
<br/>
 LLVM&nbsp;— не просто очередной академический проект. Его история началась в 2000 году в Университете Иллинойса, а теперь LLVM используют такие гиганты индустрии как Apple и Adobe. В&nbsp;частности, на LLVM основана подсистема OpenGL в MacOS X 10.5, а iPhone SDK использует GCC с бэкэндом на LLVM. Apple является одним из основных спонсоров проекта, а вдохновитель LLVM&nbsp;— Крис Латтнер&nbsp;— теперь работает в Apple.<br/>
<br/>
 В&nbsp;основе LLVM лежит промежуточное представление кода (intermediate representation, IR), над которым можно производить трансформации во время компиляции, компоновки (linking) и выполнения. Из этого представления генерируется оптимизированный машинный код для целого ряда платформ, как статически, так и динамически (JIT-компиляция). LLVM поддерживает генерацию кода для x86, x86-64, ARM, PowerPC, SPARC, MIPS, IA-64, Alpha.<br/>
<br/>
  LLVM написана на C++ и портирована на большинство *nix-систем и Windows. Система имеет модульную структуру и может расширяться дополнительными алгоритмами трансформации (compiler passes) и кодогенераторами для новых аппаратных платформ. Пользовательский фронтенд, как правило, линкуется с LLVM и использует C++ API для генерации кода и его преобразований. Однако LLVM включает в себя и standalone утилиты.<br/>
<br/>
  Для тех, кто не без оснований считает C++ не лучшим языком для написания компиляторов, с недавних пор в LLVM включена обертка API для OCaml.<br/>
<br/>
  Чтобы понять, что можно сделать с помощью LLVM, и на каком уровне придётся работать, давайте разберёмся, <div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/programming/47878/#habracut">что из себя представляет LLVM IR.</a> </div>]]></description>
			
			<pubDate>Fri, 26 Dec 2008 17:37:48 GMT</pubDate>
			<author>khayrov</author>
			<category>LLVM</category><category>компиляторы</category><category>оптимизация</category><category>SSA</category><category>промежуточный код</category><category>виртуальные машины</category>
		</item>
		
		
		
		
		
		
		
		
	
	
	
	
	
	
	
	

	
</channel>
</rss>

