<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=416380&amp;view=findpost&amp;p=3815987</guid>
        <pubDate>Sun, 01 Dec 2019 23:40:12 +0000</pubDate>
        <title>Включение поддержки AVX</title>
        <link>https://forum.sources.ru/index.php?showtopic=416380&amp;view=findpost&amp;p=3815987</link>
        <description><![CDATA[Qraizer: Думаю, был бы баг в PM16, тоже не стали бы фиксать, его там просто изначально не было. Микрокод – он такой... фиксать его непросто, а потом ещё распространять через патчи...<br><br>Скорее BlockValidate. Хотя вариантов масса. BitmapVector... почему нет.]]></description>
        <author>Qraizer</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=416380&amp;view=findpost&amp;p=3815986</guid>
        <pubDate>Sun, 01 Dec 2019 21:01:26 +0000</pubDate>
        <title>Включение поддержки AVX</title>
        <link>https://forum.sources.ru/index.php?showtopic=416380&amp;view=findpost&amp;p=3815986</link>
        <description><![CDATA[Jin X: Кстати (вопрос не в тему), кто-нибудь знает, как расшифровывается аббревиатура <strong class='tag-b'>BV</strong> (XGETBV, XSETBV, XSTATE_BV...)?<br>
Мне прям любопытно, почему такое сокращение. Может, это Bit Values или что-нибудь такое?]]></description>
        <author>Jin X</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=416380&amp;view=findpost&amp;p=3815985</guid>
        <pubDate>Sun, 01 Dec 2019 20:39:25 +0000</pubDate>
        <title>Включение поддержки AVX</title>
        <link>https://forum.sources.ru/index.php?showtopic=416380&amp;view=findpost&amp;p=3815985</link>
        <description><![CDATA[Jin X: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=416380&view=findpost&p=3815982'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2019-12-01T19:24:49+00:00">01.12.19, 19:24</time></span><div class='quote '>Вероятно, интеловцы решили не фиксать VEX, т.к. реальный и виртуальный режимы нынче крайне маловостребованы.</div></div>16-битный PM тоже маловостребован, тем не менее он поддерживает VEX.<br>
Про сегментные регистры можно поверить, что это просто баг, а здесь – лично мне не верится. ИМХО, это сделано намеренно... только какова причина? Должна же она быть&#33;<br>
Есть более новые, чем AVX, расширения (без VEX), которые, судя по описанию (специально сейчас посмотрел SDM), прекрасно работают в RM: MOVBE, PCLMULQDQ, ADX, RDRAND, SHA, MPX, даже TSX (в т.ч. RTM, хотя, казалось бы, зачем это в RM вообще?)]]></description>
        <author>Jin X</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=416380&amp;view=findpost&amp;p=3815982</guid>
        <pubDate>Sun, 01 Dec 2019 19:24:49 +0000</pubDate>
        <title>Включение поддержки AVX</title>
        <link>https://forum.sources.ru/index.php?showtopic=416380&amp;view=findpost&amp;p=3815982</link>
        <description><![CDATA[Qraizer: Это не запрет. Так случайно вышло. Примерно как неправильное поведение механизма сегментной трансляции логических адресов в линейные при смене реального/защищённого режимов без последующей перезагрузки сегментных регистров. Ну, видит вот декодер неправильный объектный код для LDS, а микрокод для RM/VM никто не проапдейтил. Получите exception #6. Вероятно, интеловцы решили не фиксать VEX, т.к. реальный и виртуальный режимы нынче крайне маловостребованы.]]></description>
        <author>Qraizer</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=416380&amp;view=findpost&amp;p=3815978</guid>
        <pubDate>Sun, 01 Dec 2019 15:24:53 +0000</pubDate>
        <title>Включение поддержки AVX</title>
        <link>https://forum.sources.ru/index.php?showtopic=416380&amp;view=findpost&amp;p=3815978</link>
        <description><![CDATA[Jin X: <strong class='tag-b'>Qraizer</strong>, не очень понятен смысл сего запрета.<br>
<br>
В аттачах выдержка из мана (том 2A, раздел 2.4, страницы 60 и далее).<br>
Ну и: &quot;<em class='tag-i'>VEX-encoded GPR instructions are not supported in real and virtual 8086 modes.</em>&quot; (стр. 69)<br>
<br>
<span class="b-attach" data-size="1400351" data-hits="225" data-attach-id="61166" data-attach-post-id="3815978">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3815978&amp;attach_id=61166' title='Скачать файл' target='_blank'>no_vex_in_real_and_v86.zip</a> (, : 225)
		</span>]]></description>
        <author>Jin X</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=416380&amp;view=findpost&amp;p=3815967</guid>
        <pubDate>Sun, 01 Dec 2019 12:05:05 +0000</pubDate>
        <title>Включение поддержки AVX</title>
        <link>https://forum.sources.ru/index.php?showtopic=416380&amp;view=findpost&amp;p=3815967</link>
        <description><![CDATA[Qraizer: Хм. Т.е. их тупо не пропускает декодер, останавливаясь на начальном этапе декодирования? Забавно.]]></description>
        <author>Qraizer</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=416380&amp;view=findpost&amp;p=3815956</guid>
        <pubDate>Sat, 30 Nov 2019 21:39:18 +0000</pubDate>
        <title>Включение поддержки AVX</title>
        <link>https://forum.sources.ru/index.php?showtopic=416380&amp;view=findpost&amp;p=3815956</link>
        <description><![CDATA[Jin X: При нежелании работать всегда в PMode, можно даже переключаться на время работы с AVX в PMode, а после обратно в RMode.<br>При этом, если не писать в сегментные регистры, можно спокойно работать с памятью, как будто мы находимся в RMode. Не надо никаких таблиц грузить (GDT и пр) :)<br>Я сейчас померил скорость переключения RM-PM-RM в VMware, у меня получилось порядка полумиллиона пар переключений в секунду. Довольно-таки неплохая скорость (в реале наверняка будет больше) :D]]></description>
        <author>Jin X</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=416380&amp;view=findpost&amp;p=3815944</guid>
        <pubDate>Sat, 30 Nov 2019 18:44:56 +0000</pubDate>
        <title>Включение поддержки AVX</title>
        <link>https://forum.sources.ru/index.php?showtopic=416380&amp;view=findpost&amp;p=3815944</link>
        <description><![CDATA[Jin X: Короче, выяснилось, что в RMode и в V86 AVX не пашет, надо переходить в PMode (в 16 битном тоже должно работать).<br>
<a class='tag-url' href='https://software.intel.com/en-us/forums/intel-isa-extensions/topic/297055' target='_blank'>https://software.intel.com/en-us/forums/int...ns/topic/297055</a> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2019-11-30T19:41:11+00:00">30.11.19, 19:41</time></span></span><br>
Всё верно.<br>
Заменил <strong class='tag-b'>or al,0x2</strong> на <strong class='tag-b'>or al,0x3</strong>, добавил <strong class='tag-b'>cli</strong> и в конец:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp;mov eax,cr0</div><div class="code_line">&nbsp;&nbsp; &nbsp;and al,not 1</div><div class="code_line">&nbsp;&nbsp; &nbsp;mov cr0,eax</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>И всё заработало.]]></description>
        <author>Jin X</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=416380&amp;view=findpost&amp;p=3815936</guid>
        <pubDate>Sat, 30 Nov 2019 17:19:46 +0000</pubDate>
        <title>Включение поддержки AVX</title>
        <link>https://forum.sources.ru/index.php?showtopic=416380&amp;view=findpost&amp;p=3815936</link>
        <description><![CDATA[Qraizer: Попробуй перехватить исключения. Если они возникают, скорее всего вмварь глючит с виртуализацией AVX.]]></description>
        <author>Qraizer</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=416380&amp;view=findpost&amp;p=3815934</guid>
        <pubDate>Sat, 30 Nov 2019 16:48:17 +0000</pubDate>
        <title>Включение поддержки AVX</title>
        <link>https://forum.sources.ru/index.php?showtopic=416380&amp;view=findpost&amp;p=3815934</link>
        <description><![CDATA[Jin X: <div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">org 0x100</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;; Enable SSE</div><div class="code_line">&nbsp;&nbsp; &nbsp;mov eax,cr0</div><div class="code_line">&nbsp;&nbsp; &nbsp;and al,0xFB &nbsp; &nbsp; ; clear coprocessor emulation CR0.EM (bit 2)</div><div class="code_line">&nbsp;&nbsp; &nbsp;or &nbsp;al,0x2 &nbsp; &nbsp; &nbsp;; set coprocessor monitoring CR0.MP (bit 1)</div><div class="code_line">&nbsp;&nbsp; &nbsp;mov cr0,eax</div><div class="code_line">&nbsp;&nbsp; &nbsp;mov eax,cr4</div><div class="code_line">&nbsp;&nbsp; &nbsp;or &nbsp;eax,0x40600 ; set CR4.OSFXSR (bit 9), CR4.OSXMMEXCPT (bit 10) and CR4.OSXSAVE (bit 18)</div><div class="code_line">&nbsp;&nbsp; &nbsp;mov cr4,eax</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;; Enable AVX</div><div class="code_line">&nbsp;&nbsp; &nbsp;xor ecx,ecx</div><div class="code_line">&nbsp;&nbsp; &nbsp;xgetbv &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; load XCR0 register</div><div class="code_line">&nbsp;&nbsp; &nbsp;or &nbsp;al,7 &nbsp; &nbsp; &nbsp; &nbsp;; set AVX, SSE, x87 bits</div><div class="code_line">&nbsp;&nbsp; &nbsp;xsetbv &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; save back to XCR0</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;; Test SSE</div><div class="code_line">&nbsp;&nbsp; &nbsp;xorps &nbsp; xmm0,xmm0</div><div class="code_line">&nbsp;&nbsp; &nbsp;xorps &nbsp; xmm1,xmm1</div><div class="code_line">&nbsp;&nbsp; &nbsp;addss &nbsp; xmm0,xmm1</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;; Test AVX</div><div class="code_line">&nbsp;&nbsp; &nbsp;vzeroupper</div><div class="code_line">&nbsp;&nbsp; &nbsp;vxorps &nbsp;xmm0,xmm0,xmm0</div><div class="code_line">&nbsp;&nbsp; &nbsp;vxorps &nbsp;xmm1,xmm1,xmm1</div><div class="code_line">&nbsp;&nbsp; &nbsp;vaddps &nbsp;xmm2,xmm0,xmm1</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;ret</div></ol></div></div></div></div>Запускаю в VMware (MS-DOS).<br>
Доходит до vzeroupper и виснет.<br>
Что ему ещё не хватает?<br>
<br>
Инфа: <a class='tag-url' href='https://wiki.osdev.org/SSE' target='_blank'>https://wiki.osdev.org/SSE</a> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2019-11-30T16:50:28+00:00">30.11.19, 16:50</time></span></span><br>
Даже добавляю код из Intel SDM для проверки поддержки AVX, выдаёт, что всё ок.<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp;mov eax, 1</div><div class="code_line">&nbsp;&nbsp;cpuid</div><div class="code_line">&nbsp;&nbsp;and ecx, 018000000H</div><div class="code_line">&nbsp;&nbsp;cmp ecx, 018000000H; check both OSXSAVE and AVX feature flags</div><div class="code_line">&nbsp;&nbsp;jne not_supported</div><div class="code_line">&nbsp;&nbsp;; processor supports AVX instructions and XGETBV is enabled by OS</div><div class="code_line">&nbsp;&nbsp;mov ecx, 0; specify 0 for XCR0 register</div><div class="code_line">&nbsp;&nbsp;xgetbv ; result in EDX:EAX</div><div class="code_line">&nbsp;&nbsp;and eax, 06H</div><div class="code_line">&nbsp;&nbsp;cmp eax, 06H; check OS has enabled both XMM and YMM state support</div><div class="code_line">&nbsp;&nbsp;jne not_supported</div><div class="code_line">&nbsp;&nbsp;mov eax, 1</div><div class="code_line">&nbsp;&nbsp;jmp done</div><div class="code_line">not_supported:</div><div class="code_line">&nbsp;&nbsp;mov eax, 0</div><div class="code_line">done:</div></ol></div></div></div></div>]]></description>
        <author>Jin X</author>
        <category>Assembler</category>
      </item>
	
      </channel>
      </rss>
	