<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Undefined instruction.</title>
	<atom:link href="http://blog.not-a-kernel-guy.com/2008/10/20/361/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.not-a-kernel-guy.com/2008/10/20/361?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=undefined-instruction</link>
	<description>... также известный как &#34;Not a kernel guy&#34;</description>
	<lastBuildDate>Sun, 29 Jan 2012 04:14:45 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: Karim</title>
		<link>http://blog.not-a-kernel-guy.com/2008/10/20/361#comment-12375</link>
		<dc:creator>Karim</dc:creator>
		<pubDate>Fri, 24 Oct 2008 11:10:26 +0000</pubDate>
		<guid isPermaLink="false">http://blog.not-a-kernel-guy.com/?p=361#comment-12375</guid>
		<description>Спасибо за информацию автору и комментаторам ;)</description>
		<content:encoded><![CDATA[<p>Спасибо за информацию автору и комментаторам <img src='http://blog.not-a-kernel-guy.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eugene Golushkov</title>
		<link>http://blog.not-a-kernel-guy.com/2008/10/20/361#comment-12327</link>
		<dc:creator>Eugene Golushkov</dc:creator>
		<pubDate>Wed, 22 Oct 2008 05:35:21 +0000</pubDate>
		<guid isPermaLink="false">http://blog.not-a-kernel-guy.com/?p=361#comment-12327</guid>
		<description>Не забываем про sysenter/sysexit :)</description>
		<content:encoded><![CDATA[<p>Не забываем про sysenter/sysexit <img src='http://blog.not-a-kernel-guy.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Not a kernel guy</title>
		<link>http://blog.not-a-kernel-guy.com/2008/10/20/361#comment-12326</link>
		<dc:creator>Not a kernel guy</dc:creator>
		<pubDate>Wed, 22 Oct 2008 05:15:51 +0000</pubDate>
		<guid isPermaLink="false">http://blog.not-a-kernel-guy.com/?p=361#comment-12326</guid>
		<description>&lt;blockquote&gt;А исключение #UD достаточно редко - либо оно окажется валидным системным вызовом, либо последним в жизни неосторожного процесса.&lt;/blockquote&gt;

И чтобы положить конец этим извращениям придумали syscall/sysret. :-)</description>
		<content:encoded><![CDATA[<blockquote><p>А исключение #UD достаточно редко &#8211; либо оно окажется валидным системным вызовом, либо последним в жизни неосторожного процесса.</p></blockquote>
<p>И чтобы положить конец этим извращениям придумали syscall/sysret. <img src='http://blog.not-a-kernel-guy.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eugene Golushkov</title>
		<link>http://blog.not-a-kernel-guy.com/2008/10/20/361#comment-12321</link>
		<dc:creator>Eugene Golushkov</dc:creator>
		<pubDate>Tue, 21 Oct 2008 19:24:14 +0000</pubDate>
		<guid isPermaLink="false">http://blog.not-a-kernel-guy.com/?p=361#comment-12321</guid>
		<description>Для этого используется 0xCC == int3. Имеет важные преимущества - длина один байт, так что передача управления по любому адресу приведет к исполнению именно этой инструкции - в отличии от двухбайтной. Второе преимущество - выделенный вектор исключения (№3), на котором сидит либо kernel mode debugger, либо заглушка, отдающая исключение user-mode debugger или крэшающая систему в зависимости от режима фаултнувшегося кода. В общем, инструкция задуманная как помощь отладчикам.

А насчет проверки корректности обработки исключения OS - так еще важнее проверить корректность генерации исключения процессором. Недаром эта инструкция появилась в эпоху спекулятивных процессоров, исключение для которых это что-то типа длинной веревки, дергающей за то, к чему привязана не сразу, а в середине полета :)</description>
		<content:encoded><![CDATA[<p>Для этого используется 0xCC == int3. Имеет важные преимущества &#8211; длина один байт, так что передача управления по любому адресу приведет к исполнению именно этой инструкции &#8211; в отличии от двухбайтной. Второе преимущество &#8211; выделенный вектор исключения (№3), на котором сидит либо kernel mode debugger, либо заглушка, отдающая исключение user-mode debugger или крэшающая систему в зависимости от режима фаултнувшегося кода. В общем, инструкция задуманная как помощь отладчикам.</p>
<p>А насчет проверки корректности обработки исключения OS &#8211; так еще важнее проверить корректность генерации исключения процессором. Недаром эта инструкция появилась в эпоху спекулятивных процессоров, исключение для которых это что-то типа длинной веревки, дергающей за то, к чему привязана не сразу, а в середине полета <img src='http://blog.not-a-kernel-guy.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eugene Golushkov</title>
		<link>http://blog.not-a-kernel-guy.com/2008/10/20/361#comment-12320</link>
		<dc:creator>Eugene Golushkov</dc:creator>
		<pubDate>Tue, 21 Oct 2008 19:03:24 +0000</pubDate>
		<guid isPermaLink="false">http://blog.not-a-kernel-guy.com/?p=361#comment-12320</guid>
		<description>MS использовала в Win95 в качестве системного вызова из virtual 8086 режима запрещенную (и бессмысленную) в нем инструкцию AVPL. Насколько я читал, такая техника использования запрещенных инструкций в качестве системных вызовов идет еще из OS/360. Делать что-то явно запрещенное в качестве системного вызова, типа DOS-овского int 21h в 32х битной OS означает наткнуться на #GP, обработчик которого и так очень перегружен - практически только ошибки страниц через него не проходят. А исключение #UD достаточно редко - либо оно окажется валидным системным вызовом, либо последним в жизни неосторожного процесса. Ну и все хорошо для авторов OS, важно только чтобы инвалидный опкод не стал внезапно разрешенным.</description>
		<content:encoded><![CDATA[<p>MS использовала в Win95 в качестве системного вызова из virtual 8086 режима запрещенную (и бессмысленную) в нем инструкцию AVPL. Насколько я читал, такая техника использования запрещенных инструкций в качестве системных вызовов идет еще из OS/360. Делать что-то явно запрещенное в качестве системного вызова, типа DOS-овского int 21h в 32х битной OS означает наткнуться на #GP, обработчик которого и так очень перегружен &#8211; практически только ошибки страниц через него не проходят. А исключение #UD достаточно редко &#8211; либо оно окажется валидным системным вызовом, либо последним в жизни неосторожного процесса. Ну и все хорошо для авторов OS, важно только чтобы инвалидный опкод не стал внезапно разрешенным.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Not a kernel guy</title>
		<link>http://blog.not-a-kernel-guy.com/2008/10/20/361#comment-12318</link>
		<dc:creator>Not a kernel guy</dc:creator>
		<pubDate>Tue, 21 Oct 2008 15:00:06 +0000</pubDate>
		<guid isPermaLink="false">http://blog.not-a-kernel-guy.com/?p=361#comment-12318</guid>
		<description>Еще один вариант - получить разное поведение в зависимости от того, какой обработчик обрабатывает STATUS_INVALID_OPCODE в данный момент. В обработчике всегда можно продолжить выполнение кода &lt;em&gt;после&lt;/em&gt; сбойной инструкции.</description>
		<content:encoded><![CDATA[<p>Еще один вариант &#8211; получить разное поведение в зависимости от того, какой обработчик обрабатывает STATUS_INVALID_OPCODE в данный момент. В обработчике всегда можно продолжить выполнение кода <em>после</em> сбойной инструкции.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Сан Саныч</title>
		<link>http://blog.not-a-kernel-guy.com/2008/10/20/361#comment-12310</link>
		<dc:creator>Сан Саныч</dc:creator>
		<pubDate>Tue, 21 Oct 2008 10:41:47 +0000</pubDate>
		<guid isPermaLink="false">http://blog.not-a-kernel-guy.com/?p=361#comment-12310</guid>
		<description>2Alexander: могу только предположить, что инструкцию можно использовать для заполнения (или предварения) памяти, в которую в нормальных условиях нельзя передавать управление. Ну и само собой, для проверки того, насколько корректно ОС обрабатывает соответствующее исключение.</description>
		<content:encoded><![CDATA[<p>2Alexander: могу только предположить, что инструкцию можно использовать для заполнения (или предварения) памяти, в которую в нормальных условиях нельзя передавать управление. Ну и само собой, для проверки того, насколько корректно ОС обрабатывает соответствующее исключение.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sergey Dindikov</title>
		<link>http://blog.not-a-kernel-guy.com/2008/10/20/361#comment-12309</link>
		<dc:creator>Sergey Dindikov</dc:creator>
		<pubDate>Tue, 21 Oct 2008 10:21:33 +0000</pubDate>
		<guid isPermaLink="false">http://blog.not-a-kernel-guy.com/?p=361#comment-12309</guid>
		<description>Прочитал тут недавно:
http://ru.wikipedia.org/wiki/MC_Hammer 

подтверждение здесь:
http://www.sandpile.org/ia32/cpuid.htm


В процессорах фирмы AMD, таких как Athlon64 и Opteron, функция Cpuid 0x8FFFFFFF возвращает в регистрах EAX, EBX, ECX и EDX строку «IT’S HAMMER TIME».</description>
		<content:encoded><![CDATA[<p>Прочитал тут недавно:<br />
<a href="http://ru.wikipedia.org/wiki/MC_Hammer" rel="nofollow">http://ru.wikipedia.org/wiki/MC_Hammer</a> </p>
<p>подтверждение здесь:<br />
<a href="http://www.sandpile.org/ia32/cpuid.htm" rel="nofollow">http://www.sandpile.org/ia32/cpuid.htm</a></p>
<p>В процессорах фирмы AMD, таких как Athlon64 и Opteron, функция Cpuid 0x8FFFFFFF возвращает в регистрах EAX, EBX, ECX и EDX строку «IT’S HAMMER TIME».</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Блог Юрия Акопова : &#34;Заранее обречённый на полнейший провал&#34;</title>
		<link>http://blog.not-a-kernel-guy.com/2008/10/20/361#comment-12308</link>
		<dc:creator>Блог Юрия Акопова : &#34;Заранее обречённый на полнейший провал&#34;</dc:creator>
		<pubDate>Tue, 21 Oct 2008 10:05:35 +0000</pubDate>
		<guid isPermaLink="false">http://blog.not-a-kernel-guy.com/?p=361#comment-12308</guid>
		<description>[...] UD2 - undefined instruction       Published 21 октября 2008 г. 13:37 by Блог Юрия Акопова Filed under: IT [...]</description>
		<content:encoded><![CDATA[<p>[...] UD2 &#8211; undefined instruction       Published 21 октября 2008 г. 13:37 by Блог Юрия Акопова Filed under: IT [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alexander</title>
		<link>http://blog.not-a-kernel-guy.com/2008/10/20/361#comment-12306</link>
		<dc:creator>Alexander</dc:creator>
		<pubDate>Tue, 21 Oct 2008 08:56:12 +0000</pubDate>
		<guid isPermaLink="false">http://blog.not-a-kernel-guy.com/?p=361#comment-12306</guid>
		<description>Кто бы ещё привёл пример, где эта команда применяется? Понятно, что в целях тестирования - ну а конкретнее?</description>
		<content:encoded><![CDATA[<p>Кто бы ещё привёл пример, где эта команда применяется? Понятно, что в целях тестирования &#8211; ну а конкретнее?</p>
]]></content:encoded>
	</item>
</channel>
</rss>

