<?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=417895&amp;view=findpost&amp;p=3827835</guid>
        <pubDate>Tue, 07 Apr 2020 13:44:26 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827835</link>
        <description><![CDATA[Славян: Да ничего, ничего&#33; :blush:<br>Просто некоторая неприязнь к некоей неоднозначности... Спустя годы народ забудет отчего так, и будут вопросы с выражением: :blink:]]></description>
        <author>Славян</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827832</guid>
        <pubDate>Tue, 07 Apr 2020 13:28:48 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827832</link>
        <description><![CDATA[Jin X: <strong class='tag-b'>Славян</strong>, и что?<br>
Когда мы пишем <strong class='tag-b'>xor ecx,ecx</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">xor ecx,ecx !rmsrc</div><div class="code_line">xor ecx,ecx !rmdst</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>(обозначать, как вариант, можно и по-другому).<br>
<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">mov eax, ~ #{</div><div class="code_line">&nbsp;&nbsp; &nbsp;xor ecx,ecx !rmsrc</div><div class="code_line">&nbsp;&nbsp; &nbsp;xor edx,edx !rmdst</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">push hidword double(3.14159265358979)</div></ol></div></div></div></div>]]></description>
        <author>Jin X</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827696</guid>
        <pubDate>Tue, 07 Apr 2020 09:16:04 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827696</link>
        <description><![CDATA[Славян: Неоднозначность же в п.1 - есть код, у коего разные варианты машинного представления.]]></description>
        <author>Славян</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827689</guid>
        <pubDate>Tue, 07 Apr 2020 07:26:16 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827689</link>
        <description><![CDATA[Jin X: Ещё пару фишек придумал:<br>
<br>
1. Перевод кода внутри #{} в числовое значение:<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">mov eax, not #{xor ecx,ecx}</div></ol></div></div></div></div><br>
2. Оптимизация отдельных инструкций.<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">*mov eax,0 &nbsp;; преобразуется в xor eax,eax</div></ol></div></div></div></div>По скорости:<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">+dec eax &nbsp;; преобразуется в sub eax,1</div></ol></div></div></div></div>]]></description>
        <author>Jin X</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827560</guid>
        <pubDate>Sat, 04 Apr 2020 13:42:57 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827560</link>
        <description><![CDATA[Jin X: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=417895&view=findpost&p=3827557'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Славян &#064; <time class="tag-quote__quoted-time" datetime="2020-04-04T11:24:06+00:00">04.04.20, 11:24</time></span><div class='quote '>Хотя ассемблерщиков здесь маловато, кажись...</div></div>Я думаю, что человек 5 вполне хватит для нормального диалога.<br>
Другое вопрос – что это даст? Мы будет Intel&#39;у отправлять это всё?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=417895&view=findpost&p=3827557'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Славян &#064; <time class="tag-quote__quoted-time" datetime="2020-04-04T11:24:06+00:00">04.04.20, 11:24</time></span><div class='quote '>Увы, но толк может выйти лет чрез 5, думается.</div></div>Была бы группа побольше и посерьёзней... с обоснованием – зачем.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=417895&view=findpost&p=3827557'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Славян &#064; <time class="tag-quote__quoted-time" datetime="2020-04-04T11:24:06+00:00">04.04.20, 11:24</time></span><div class='quote '>до 0 в строке или докуда идёт считывание?</div></div>Не знаю, это скорее шутка была :)]]></description>
        <author>Jin X</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827557</guid>
        <pubDate>Sat, 04 Apr 2020 11:24:06 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827557</link>
        <description><![CDATA[Славян: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=417895&view=findpost&p=3827554'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Jin X &#064; <time class="tag-quote__quoted-time" datetime="2020-04-04T10:31:49+00:00">04.04.20, 10:31</time></span><div class='quote '>Не думаю, что желаний будет мало, если создать отдельную тему об этом.</div></div>Можно попробовать. Только очень хочется, чтобы по существу писали, а не очередной холивар случился, как это часто тут у нас бывает. Хотя ассемблерщиков здесь маловато, кажись...<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=417895&view=findpost&p=3827554'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Jin X &#064; <time class="tag-quote__quoted-time" datetime="2020-04-04T10:31:49+00:00">04.04.20, 10:31</time></span><div class='quote '>Можно и написать. Если будет толк, буду только рад</div></div>Увы, но толк может выйти лет чрез 5, думается. Что великовато для столь скромных желаний. Да и я не стану писать, - вот если б кто статусом повыше... Или же в change.org опять???  :wall: <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=417895&view=findpost&p=3827554'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Jin X &#064; <time class="tag-quote__quoted-time" datetime="2020-04-04T10:31:49+00:00">04.04.20, 10:31</time></span><div class='quote '>REVERS – тоже узкая операция.</div></div>Согласен. Просто сразу на ум пришло.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=417895&view=findpost&p=3827554'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Jin X &#064; <time class="tag-quote__quoted-time" datetime="2020-04-04T10:31:49+00:00">04.04.20, 10:31</time></span><div class='quote '>Может, тогда и INT2STR, STR2INT?</div></div>Неплохо&#33; В AL-система счисления, CL-длина строки? Или так:<br>
INT2STR [адрес], reg=число, reg8=сист. счисления<br>
STR2INT reg=число, [адрес], reg8=сист. счисления ;до 0 в строке или докуда идёт считывание?]]></description>
        <author>Славян</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827554</guid>
        <pubDate>Sat, 04 Apr 2020 10:31:49 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827554</link>
        <description><![CDATA[Jin X: Не думаю, что желаний будет мало, если создать отдельную тему об этом.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=417895&view=findpost&p=3827550'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Славян &#064; <time class="tag-quote__quoted-time" datetime="2020-04-04T08:38:19+00:00">04.04.20, 08:38</time></span><div class='quote '>Так что, теперь, писать и в AMD/Intel, чтобы добавили???</div></div><s class='tag-s'>То бензин, а то дети.</s> То DN, а то Intel.<br>
Можно и написать. Если будет толк, буду только рад :)<br>
<br>
REVERS – тоже узкая операция.<br>
Может, тогда и INT2STR, STR2INT? :P<br>
<br>
А вот я хочу MOVSBW – читаем байт, пишем слово (старший байт сохраняем постоянным) :o <br>
И соответственно MOVSWD/MOVSDQ...]]></description>
        <author>Jin X</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827550</guid>
        <pubDate>Sat, 04 Apr 2020 08:38:19 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827550</link>
        <description><![CDATA[Славян: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Jin X</span><div class='quote '>FROOTS – решение квадратных уравнений или что?</div></div>Шире: корни многочлена n-ой степени (я ж написал, что CL-степень многочлена).<br>
<br>
Ещё б какую-то: REVERS (ESI-строка, CX-длина) - реверс строки.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Jin X</span><div class='quote '>И если мы опросим ещё 100 человек, у каждого будут свои пожелания.</div></div>Это стандартная отговорка. Вот только людей очень много, а желаний - не очень. И так бы люди вместе выявили, что им действительно НАДО.<br>
<br>
FGAMMA - узкая, но когда я 12 лет назад попросил разработчиков NDN (Necro... Dos Navigator) добавить её в калькулятор, то добавили&#33;<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>whatsnew.txt</span><div class='quote '>CALCULATOR<br>
  Gamma-function - is the function, so that G(n+1) = n&#33; But it determine with real x, but not integer &#33;&#33;&#33;</div></div>Так что, теперь, писать и в AMD/Intel, чтобы добавили??? :-?]]></description>
        <author>Славян</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827547</guid>
        <pubDate>Sat, 04 Apr 2020 07:51:04 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827547</link>
        <description><![CDATA[Jin X: <strong class='tag-b'>Славян</strong>, какому <em class='tag-i'>народу</em> это надо? Это надо не <em class='tag-i'>народу</em>, а <em class='tag-i'>одному</em> конкретному человеку :)<br>
1,3,4 - довольно узкие задачи, коих тысячи (FROOTS – решение квадратных уравнений или что?) Часто ли в производстве видео, 3D-графике, DSP, сведении звука, распознавании и синтезе речи, задачах искусственного интеллекта и т.п. используются квадратные уравнения? В чём проблема реализовать это самому?<br>
<br>
Я бы тоже хотел что-то, скажем, SIMD-деление целых чисел, SIMD-синусы и логарифмы, работу со 128 и 256-битными целыми (почему нельзя рассмотреть YMM как одно целое число и умножить его на другое?)<br>
А ещё я хочу, чтобы был пользовательский флаг, который не менялся бы в результате арифметических операций (скажем, UF), а менялся бы через CLU, DTU, CMU и были соответственно JU, JNZ.<br>
И т.д.<br>
И мне тоже кажется странным, что такого не сделали. Тем более, user flag, как мне сказали, есть в некоторых даже 8-битных процессорах. Но это мои личные хотелки. FROOTS мне нафиг не нужен. И если мы опросим ещё 100 человек, у каждого будут свои пожелания.]]></description>
        <author>Jin X</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827539</guid>
        <pubDate>Sat, 04 Apr 2020 04:29:41 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827539</link>
        <description><![CDATA[Славян: Эх, <strong class='tag-b'>Jin X</strong>, не это народу надо, не это&#33;<br>
Вот откопал у себя файл 2009 года с командами-хотелками:<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">1.FROOT ; FROOTS ; CROOTS, FINDROOTS, FSQRTS, FINDSQRTS, SSQRTS=Search SQuare RooTS</div><div class="code_line">;без аргументов !?</div><div class="code_line">Вход:ESI(RSI) - адрес коэффициентов (комплексных?)</div><div class="code_line">&nbsp;&nbsp; &nbsp;EDI(RDI) - адрес места, куда класть корни (или же первый=один=какой-то класть в ST(0), ST(1)-мнимая часть?)</div><div class="code_line">&nbsp;&nbsp; &nbsp;CL = степень многочлена</div><div class="code_line">Выход:EDI(RDI) - корни (или же первый=один=какой-то класть в ST(0), ST(1)-мнимая часть?)</div><div class="code_line">&nbsp;&nbsp; &nbsp;Флаги: ZF=1,если нет корней(как это?), OF=1,если они не влезли</div><div class="code_line">Проблемы: а) Старший коэф.=0.</div><div class="code_line">Возмож_решения: а) Считать старший=1 (но нежелательно...)</div><div class="code_line">&nbsp;</div><div class="code_line">2.RAND</div><div class="code_line">;без аргументов !?</div><div class="code_line">Вход:ничего</div><div class="code_line">Выход:случайное целое число в EAX(RAX), равномерно распределённое</div><div class="code_line">Замечание: надо бы и плавающее (в диапазоне [ST,ST(1)] или [0,1] ? )=FRAND</div><div class="code_line">&nbsp;</div><div class="code_line">3.FGAMMA</div><div class="code_line">Вход: fword/qword ptr - число x (x!= 0; -1; -2; ...)</div><div class="code_line">Выход: значение гамма-функции</div><div class="code_line">или же FACTOR</div><div class="code_line">Вход: fword/qword ptr - число x (x!= -1; -2; ...)</div><div class="code_line">Выход: значение факториала</div><div class="code_line">&nbsp;</div><div class="code_line">4.FRSPHERE - радиус описанной окружности + центр оной</div><div class="code_line">Вход: 6 чисел в ST(0-5) = {x1,y1,...,x3,y3} - 3 точки треугольника</div><div class="code_line">Выход: ST(0)-радиус окружности, ST(1-2) - центр её</div><div class="code_line">Замечание: а) 3 точки на прямой лежат =&#62; радиус = +бесконечности(+∞), центр в бесконечности(∞)</div><div class="code_line">б) всё можно сдвинуть, чтобы одна из точек была нулём, а тогда надо задавать 4 значения (2 точки).</div></ol></div></div></div></div>Ну вот с п. 2 они угадали, сделали RDRAND (целый пока только, правда).]]></description>
        <author>Славян</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827532</guid>
        <pubDate>Fri, 03 Apr 2020 21:07:40 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827532</link>
        <description><![CDATA[Jin X: К примеру, вот приведение 16 строчных букв к заглавным (остальные символы остаются без изменений) с использованием SSE2:<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">; Блок инициализации (выполняется 1 раз):</div><div class="code_line">mov eax,(127-&#39;z&#39;)*01010101h</div><div class="code_line">movd xmm2,eax &nbsp; &nbsp; &nbsp; ; mov eax value to lower dword of xmm2</div><div class="code_line">mov eax,(127-26)*01010101h</div><div class="code_line">movd xmm3,eax &nbsp; &nbsp; &nbsp; ; mov eax value to lower dword of xmm3</div><div class="code_line">mov eax,20202020h</div><div class="code_line">movd xmm4,eax &nbsp; &nbsp; &nbsp; ; mov eax value to lower dword of xmm4</div><div class="code_line">pshufd xmm2,xmm2,0 &nbsp;; fill entire xmm2 register by lower dword value</div><div class="code_line">pshufd xmm3,xmm3,0 &nbsp;; fill entire xmm3 register by lower dword value</div><div class="code_line">pshufd xmm4,xmm4,0 &nbsp;; fill entire xmm4 register by lower dword value</div><div class="code_line">&nbsp;</div><div class="code_line">; Преобразование содержимого XMM0, результат будет также в XMM0:</div><div class="code_line">movdqa xmm1,xmm0 &nbsp; &nbsp;; temp register</div><div class="code_line">paddb xmm1,xmm2 &nbsp; &nbsp; ; shift each byte with lower case letter to high signed short int values</div><div class="code_line">pcmpgtb xmm1,xmm3 &nbsp; ; compare each byte with high 26 signed values and store 0xFF (if in range)</div><div class="code_line">pand xmm1,xmm4 &nbsp; &nbsp; &nbsp;; mask with 20h (difference between upper and lower case)</div><div class="code_line">psubb xmm0,xmm1 &nbsp; &nbsp; ; convert each byte to upper case</div></ol></div></div></div></div>]]></description>
        <author>Jin X</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827530</guid>
        <pubDate>Fri, 03 Apr 2020 20:44:29 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827530</link>
        <description><![CDATA[Jin X: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=417895&view=findpost&p=3827519'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Славян &#064; <time class="tag-quote__quoted-time" datetime="2020-04-03T18:40:52+00:00">03.04.20, 18:40</time></span><div class='quote '>создатели процессорных команд AMD/Intel/... глазами бы увидели, что народу надо&#33; А не городили бы малополезные современные добавки &quot;сложим группу из 4 чисел с другой такой группой&quot;.</div></div>Я думаю, что они прекрасно знают, что нужно людям, а не от балды придумывают, что в голову взбрело. Там помимо &quot;сложим группу из 4 чисел с другой такой группой&quot; есть операции и посерьёзнее, в т.ч. скалярное произведение векторов, поиск минимумов-максимумов, <a class='tag-url' href='https://ru.wikipedia.org/wiki/Умножение-сложение' target='_blank'>умножение-сложение</a>, обратный квадратный корень, даже работа со строками (через SSE/AVX). А также кодирование AES, расчёт SHA, CRC, работа с <a class='tag-url' href='https://ru.wikipedia.org/wiki/Конечное_поле' target='_blank'>полями Галуа</a>, генерация случайных чисел, инструкции для более удобной работы с длинными числами, разные битовые операции. И многое другое. Даже чтение из нескольких разных адресов или запись в несколько разных адресов (одной операцией).<br>
Там не менее умные люди сидят, чем мы.]]></description>
        <author>Jin X</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827519</guid>
        <pubDate>Fri, 03 Apr 2020 18:40:52 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827519</link>
        <description><![CDATA[Славян: Мне просто вот что подумалось, <strong class='tag-b'>Jin X</strong>: Си-шники стали писать свои программы и увидели, что им часто неплохо было бы и вектора складывать/умножать и матрицы, и т.д. И увидели, что обычная научная запись в языке Си вроде как имеется: v = p + q, A = B*C; Но оказалось, что делать таковое со сложными объектами нельзя, язык не позволяет. Вот и пришлось создать над-язык Си++.<br>
Мораль: если бы был естественный <strong class='tag-b'>язык ассемблера</strong>, кой не шаблонные (команда, арг1, арг2) строки бы писал, а понятные простому обывателю (eax=ebx+ecx &lt;-&gt; lea eax, [ebx+ecx]), то создатели процессорных команд AMD/Intel/... глазами бы увидели, что народу надо&#33; А не городили бы малополезные современные добавки &quot;сложим группу из 4 чисел с другой такой группой&quot;.<br>
Посему думается, что САМ начальный язык тоже очень и очень важен. :blush:]]></description>
        <author>Славян</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827516</guid>
        <pubDate>Fri, 03 Apr 2020 18:21:35 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827516</link>
        <description><![CDATA[Jin X: <strong class='tag-b'>Славян</strong>, новые <em class='tag-i'>названия</em> смысла придумывать нет, потому что все уже привыкли, а вот новые способы написание кода – возможно. Но повторюсь, что это должен быть отдельный суб-язык, ИМХО, чтобы труЪ-ассемблерщики не обплевались.<br>
Тогда можно и ax=bx, и ax++, и bx-=cx+cf, и eax+=edx*4+0x1000 и всё прочее делать. И даже конструкции, которые преобразуются в несколько инструкций (типа ax=bx+cx и т.п.). Есть же, HighLevel-ассемблеры, правда, мало кто ими пользуется...<br>
По идее, можно обозначить регистры, которые можно использовать для промежуточных вычислений (предварительно директивой, либо, например, так: <strong class='tag-b'>eax=var*7+[ecx]*(ebx++) #edx,ecx</strong>), и тогда много чего можно сделать.]]></description>
        <author>Jin X</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827480</guid>
        <pubDate>Fri, 03 Apr 2020 12:26:09 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827480</link>
        <description><![CDATA[Славян: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Jin X</span><div class='quote '>Что именно подумалось? Что мы сейчас новые инструкции ассемблера изобретать будем?</div></div>Нет, конечно. Подумалось, что вы предложете новое наименование/обозначение машинным командам=инструкциям (что, собственно, я и начал, написав &#39;ax=bx&#39;).]]></description>
        <author>Славян</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827469</guid>
        <pubDate>Fri, 03 Apr 2020 11:23:11 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827469</link>
        <description><![CDATA[Jin X: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=417895&view=findpost&p=3827398'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Славян &#064; <time class="tag-quote__quoted-time" datetime="2020-04-03T05:52:33+00:00">03.04.20, 05:52</time></span><div class='quote '>т.е. &quot;на Си&quot; перевод формальный должен быть как</div></div>С точки зрения оптимизации мой вариант лучше. Хотя современные процессоры такое сами умеют делать.<br>
Да и C/C++ тоже оптимизируют &quot;как надо&quot;: <a class='tag-url' href='https://gcc.godbolt.org/z/dF9DoP' target='_blank'>https://gcc.godbolt.org/z/dF9DoP</a><br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=417895&view=findpost&p=3827398'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Славян &#064; <time class="tag-quote__quoted-time" datetime="2020-04-03T05:52:33+00:00">03.04.20, 05:52</time></span><div class='quote '>Эх, опять&#33; Тема не про макрокоманды, а про СВОЙ АССЕМБЛЕР&#33; Плевать, что там можно насочинять в макросах, хоть &quot;main={return &#39;Hello,world&#33;&#39;;}&quot;, давайте обсудим же чистый свой асм&#33;</div></div>А макродвижок – это не часть ассемблера? К тому же, не я начал комментировать этот if :)<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=417895&view=findpost&p=3827398'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Славян &#064; <time class="tag-quote__quoted-time" datetime="2020-04-03T05:52:33+00:00">03.04.20, 05:52</time></span><div class='quote '>Потому что fasm - не ассемблер, а компилятор оного.</div></div>Ну так, и мы тоже обсуждаем тут новый лишь компилятор (и диалект), а не язык как таковой.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=417895&view=findpost&p=3827398'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Славян &#064; <time class="tag-quote__quoted-time" datetime="2020-04-03T05:52:33+00:00">03.04.20, 05:52</time></span><div class='quote '>что слегонца, но губит чистый ассемблер</div></div>Так, зачем новый асм нужен? Берём fasm или nasm и пишем ассемблерные инструкции сплошняком&#33;<br>
А заголовки через db – чище не придумаешь&#33; :jokingly:<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=417895&view=findpost&p=3827427'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>JoeUser &#064; <time class="tag-quote__quoted-time" datetime="2020-04-03T08:22:34+00:00">03.04.20, 08:22</time></span><div class='quote '>А вот Jin X уверен, что при должных и возможных временных затратах можно сделать еще более удобный, более удобно расширяемый компилятор.</div></div>На самом деле не только в расширениях дело (но и в них тоже), но и в ядре компилятора, который макросами не изменишь.<br>
К примеру, что мне не нравится в fasm:<br>
1. Блоки if не работают с include или equ внутри них. Оказалось, что препроцессор fasm делает несколько проходов: сначала создаёт символьные литералы fix, затем equ и обрабатывает include, а затем уже компилирует и там же проверяет if&#39;ы. Т.е. include сработает в любом случае, вне зависимости от условия в if. Это, конечно, решаемо через match, но это треш, неудобно и создаёт свои сложности, ИМХО.<br>
2. Макросы не могут возвращать значения.<br>
3. Слишком много всего прописано макросами, что вызывает проблемы (скажем, чтобы подключить библиотеку, который нет в стандартных win32ax.inc и т.п., нужно городить огород либо переписывать макросы library и import). Можно, конечно, переписать все макросы и распространять их отдельно, но нужно ли?<br>
4. Нельзя переключать секции туда-сюда. Скажем, написать .code ... .data ... .code ... .data нельзя. Вернее, можно, но у нас тогда будет 4 секции, а не 2.<br>
5. Нельзя через if различить некоторые типы символьных литералов (скажем, число и метку, в т.ч. несуществующую).<br>
6. Отсутствие работы с floating-point в макросах (т.е. даже dq 3.1415927/4 написать нельзя).<br>
и т.д...<br>
И так можно про каждый асм написать.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=417895&view=findpost&p=3827420'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Славян &#064; <time class="tag-quote__quoted-time" datetime="2020-04-03T07:49:04+00:00">03.04.20, 07:49</time></span><div class='quote '>В русском языке (Язык ассемблера) может именоваться просто «ассемблером», что, строго говоря, неверно, так как ассемблером именуется утилита трансляции программы с языка ассемблера в объектный код компьютера.</div></div>Да, это не очень правильно, но здесь под ассемблером понимается именно отдельный диалект.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=417895&view=findpost&p=3827442'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Славян &#064; <time class="tag-quote__quoted-time" datetime="2020-04-03T09:02:23+00:00">03.04.20, 09:02</time></span><div class='quote '>Чисто о само́м языке, думалось&#33; Пардон.</div></div>Что именно подумалось? Что мы сейчас новые инструкции ассемблера изобретать будем?  :huh:]]></description>
        <author>Jin X</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827442</guid>
        <pubDate>Fri, 03 Apr 2020 09:02:23 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827442</link>
        <description><![CDATA[Славян: Тогда всё, закругляюсь. Чисто о само́м языке, думалось&#33; Пардон.]]></description>
        <author>Славян</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827427</guid>
        <pubDate>Fri, 03 Apr 2020 08:22:34 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827427</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=417895&view=findpost&p=3827420'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Славян &#064; <time class="tag-quote__quoted-time" datetime="2020-04-03T07:49:04+00:00">03.04.20, 07:49</time></span><div class='quote '>Очень прошу уточнить, а то действительно мы о разном можем говорить..</div></div><br>
Да тут все просто. На 99% речь идет о расширениях функционала существующих компиляторов. В некотором случае это можно решать макросами, коими напичкан, fasm. А вот  <strong class='tag-b'>Jin X</strong> уверен, что при должных и возможных временных затратах можно сделать еще более удобный, более удобно расширяемый компилятор. Я специально спрашивал на счет синтаксиса fasm в соседней теме. Стандарта нет, но есть особенности и расширения. Мне это напоминает чем-то Forth, хотя ооче-очень немного. Там так же идет расширение путем определения собственного словаря. Чем не тутошнее расширение макросами?]]></description>
        <author>JoeUser</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827420</guid>
        <pubDate>Fri, 03 Apr 2020 07:49:04 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827420</link>
        <description><![CDATA[Славян: Учитывая вики, <strong class='tag-b'>Джо</strong>:<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>вики.Язык ассемблера</span><div class='quote '>В русском языке (Язык ассемблера) может именоваться просто «ассемблером» (типичны выражения типа «писать программу на ассемблере»), что, строго говоря, неверно, так как ассемблером именуется утилита трансляции программы с языка ассемблера в объектный код компьютера.</div></div>Я вполне не так мог понять название/значение темы. Очень прошу уточнить, а то действительно мы о разном можем говорить... :oops:]]></description>
        <author>Славян</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827401</guid>
        <pubDate>Fri, 03 Apr 2020 06:15:12 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827401</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=417895&view=findpost&p=3827398'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Славян &#064; <time class="tag-quote__quoted-time" datetime="2020-04-03T05:52:33+00:00">03.04.20, 05:52</time></span><div class='quote '>При том, что тоже есть жёсткая привязка к конкретным регистрам, а не к reg1, reg2, reg3.</div></div><br>
Откуда ты это взял???  :blink: Я полез смотреть макрос, не увидел такого. Или плохо смотрел ... Покажи где ты это увидел&#33; <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="2020-04-03T06:18:04+00:00">03.04.20, 06:18</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=417895&view=findpost&p=3827398'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Славян &#064; <time class="tag-quote__quoted-time" datetime="2020-04-03T05:52:33+00:00">03.04.20, 05:52</time></span><div class='quote '>Потому что fasm - не ассемблер, а компилятор оного.</div></div><br>
Вот это поворот&#33; :) А разве есть Стандарт Ассебмблера?]]></description>
        <author>JoeUser</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827398</guid>
        <pubDate>Fri, 03 Apr 2020 05:52:33 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827398</link>
        <description><![CDATA[Славян: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>JoeUser</span><div class='quote '>при чем тут макро proc?</div></div>При том, что тоже есть жёсткая привязка к конкретным регистрам, а не к reg1, reg2, reg3.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Jin X</span><div class='quote '>ax=bx=cx вполне понятно как перевести в ассемблер:</div></div>1. В Си то строка &quot;a=b&quot; интерпретируется как &quot;положить &#39;b&#39; в &#39;a&#39; и вернуть &#39;a&#39;&quot;, т.е. &quot;на Си&quot; перевод формальный должен быть как:<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">mov bx, cx</div><div class="code_line">mov ax, bx</div></ol></div></div></div></div>2. Да, ваш то перевод был быстрее для работы (двойное чтение готового), но всё же это уже оптимизация какая-то. Да и, повторюсь, это набор команд, а не одна готовая, из чего ассемблер состоит&#33;<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Jin X</span><div class='quote '><div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Славян</span><div class='quote '>&quot;if( x==y )&quot; делать нельзя, ибо нет такой готовой.</div></div>Друг мой, это макрокоманда.</div></div>Эх, опять&#33; Тема не про макрокоманды, а про СВОЙ АССЕМБЛЕР&#33; Плевать, что там можно насочинять в макросах, хоть &quot;main={return &#39;Hello,world&#33;&#39;;}&quot;, давайте обсудим же чистый <strong class='tag-b'>свой асм</strong>&#33;<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Jin X</span><div class='quote '>В том же fasm можно писать так:<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">invoke &nbsp;MessageBox, 0, invoke GetCommandLineW, &#39;Command line&#39;, MB_OK</div></ol></div></div></div></div>Почему бы и нет?</div></div>1. Потому что fasm - не ассемблер, а компилятор оного. :wall:<br>
2. Потому что видел в Си-вижуалке (при включённых настройках в оптимизации, конечно), что он пихает часть аргументов в стэк, а меж ними ещё какие-то завершающие/(грядущие?) расчёты идут. И это - неспроста&#33; Значит так быстрее будет. В этом же invoke (блин, опять про макросы&#33;) будет чёткая последовательность push&#39;иков, что слегонца, но губит чистый ассемблер. <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="2020-04-03T06:03:40+00:00">03.04.20, 06:03</time></span></span><br>
Хм... пардон, вики пишет, что fasm как бы и сколько-то ассемблер, и компилятор. Всё же в 99%-смысле это компилятор, думается мне. :blush:]]></description>
        <author>Славян</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827387</guid>
        <pubDate>Thu, 02 Apr 2020 18:46:27 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827387</link>
        <description><![CDATA[Jin X: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=417895&view=findpost&p=3827364'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Славян &#064; <time class="tag-quote__quoted-time" datetime="2020-04-02T15:53:07+00:00">02.04.20, 15:53</time></span><div class='quote '>Т.е. команду &quot;ax=bx&quot; можно сделать, а вот &quot;ax=bx=cx&quot; уже нежелательно, ибо у неё нет аналога.</div></div>ax=bx=cx вполне понятно как перевести в ассемблер:<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">mov bx,cx</div><div class="code_line">mov ax,cx</div></ol></div></div></div></div>По крайней мере, если описать, что это будет так (типа как в плюсах же есть чёткое описание каждой &quot;запятой&quot;).<br>
В любом случае, повторюсь, это всё расширения, которые плагинами реализуются. Никто не заставляет их использовать и даже включать плагин в исходник (через &quot;use&quot; или т.п. директиву).<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=417895&view=findpost&p=3827359'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2020-04-02T15:10:59+00:00">02.04.20, 15:10</time></span><div class='quote '>Зачем вам ассемблер в таком случае?</div></div>Ответ, в общем-то, тот же (хочешь – используй, не хочешь – нет). Не могу сказать, что ax=bx мне прям больше нравится, чем mov ax,bx. Но вероятно, просто из привычки. Если кому-то так будет удобнее, почему бы и нет? С другой стороны, это создаёт неоднозначность синтаксиса, что не есть хорошо (типа как в masm: хочешь пиши mov ax,msg, хочешь mov ax,[msg]). Вероятно, при использовании плагинов расширения синтаксиса нужно делать отдельный суб-язык со своим расширением имени файла, чтобы не смешивать пиво с белым вином. С другой стороны, в некоторых ассемблерах есть расширения типа .if/.else/.endif, .while и т.п. И люди этим даже пользуются&#33; В общем, надо думать. Наверное, некоторые расширения (типа .if, .while, .push и т.п. можно разрешить в основном асме, остальные же – выносить в отдельный а-ля .asmx).<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=417895&view=findpost&p=3827364'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Славян &#064; <time class="tag-quote__quoted-time" datetime="2020-04-02T15:53:07+00:00">02.04.20, 15:53</time></span><div class='quote '>Так и с вашим, Jin X, вариантом: &quot;if( x==y )&quot; делать нельзя, ибо нет такой готовой.</div></div>Друг мой, это макрокоманда.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=417895&view=findpost&p=3827380'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Славян &#064; <time class="tag-quote__quoted-time" datetime="2020-04-02T18:03:13+00:00">02.04.20, 18:03</time></span><div class='quote '>Именно с этого места, как мне думается, (ну или близко к этому) начинается гибель/смерть ассемблера и уход к языкам более высокого уровня.</div></div>В том же fasm можно писать так:<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">invoke &nbsp;MessageBox, 0, invoke GetCommandLineW, &#39;Command line&#39;, MB_OK</div></ol></div></div></div></div>Почему бы и нет? :)]]></description>
        <author>Jin X</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827382</guid>
        <pubDate>Thu, 02 Apr 2020 18:07:18 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827382</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=417895&view=findpost&p=3827380'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Славян &#064; <time class="tag-quote__quoted-time" datetime="2020-04-02T18:03:13+00:00">02.04.20, 18:03</time></span><div class='quote '>Но&#33; Когда вызываемая функция берётся один-два раза, и первый аргумент с выходным значением вам насильно навязывают EAX, то это крайне редко, но всё же выглядит аки ядовитая кость в горле&#33;&#33;&#33;</div></div><br>
Упс ... не понял, а при чем тут макро proc? :-?]]></description>
        <author>JoeUser</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827380</guid>
        <pubDate>Thu, 02 Apr 2020 18:03:13 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827380</link>
        <description><![CDATA[Славян: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>JoeUser</span><div class='quote '>видны используемые параметры. Ну супер же, не?&#33;&#33;</div></div>Очень часто, конечно, супер. Но&#33; Когда вызываемая функция берётся один-два раза, и первый аргумент с выходным значением вам насильно навязывают EAX, то это крайне редко, но всё же выглядит аки ядовитая кость в горле&#33;&#33;&#33; &gt;:( <br>
Типа, за меня решили &quot;что и куда пойдёт&quot;. Именно с этого места, как мне думается, (ну или близко к этому) начинается гибель/смерть ассемблера и уход к языкам более высокого уровня. Не могу такового простить&#33; Уж сколько раз вижу, что EBX свободен, его используй, компилятор (Си&#39;шный, имеется ввиду)&#33; Ан нет, своё давит&#33; Меняет, передвигает и ещё чёрт знает что делает, но чтобы в этот долбаный первый EAX засунуть.]]></description>
        <author>Славян</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827374</guid>
        <pubDate>Thu, 02 Apr 2020 17:38:47 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827374</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=417895&view=findpost&p=3827364'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Славян &#064; <time class="tag-quote__quoted-time" datetime="2020-04-02T15:53:07+00:00">02.04.20, 15:53</time></span><div class='quote '>Суть то ассемблера всё же в том, что там каждая команда особенная, и является, по сути, аналогом машинной команды&#33;&#33;&#33;</div></div><br>
Давняя мудрость - &quot;все хорошо вмеру&quot;  :lol: <br>
Есть вещи, которые реально удобны, и, самое главное, наглядны. Типа fasm&#39;овский макро &quot;proc/endp&quot;, например:<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">proc WindowProc stdcall uses ebx esi edi,\</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; hwnd:DWORD,wmsg:DWORD,wparam:DWORD,lparam:DWORD</div></ol></div></div></div></div><br>
Избавляет от предшествующих многочисленных push и последующих pop, видны используемые параметры. Ну супер же, не?&#33;&#33;<br>
<br>
А вот всякие там .if - это, ИМХО, от лукавого. Это точно уже путь в недо-Си.]]></description>
        <author>JoeUser</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827364</guid>
        <pubDate>Thu, 02 Apr 2020 15:53:07 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827364</link>
        <description><![CDATA[Славян: Вот&#33; Согласен с <strong class='tag-b'>Qraizer</strong>&#39;ом&#33;<br>
Суть то ассемблера всё же в том, что там каждая команда особенная, и является, по сути, аналогом машинной команды&#33;&#33;&#33;<br>
Т.е. команду &quot;ax=bx&quot; можно сделать, а вот &quot;ax=bx=cx&quot; уже нежелательно, ибо у неё нет аналога.<br>
Так и с вашим, <strong class='tag-b'>Jin X</strong>, вариантом: &quot;if( x==y )&quot; делать нельзя, ибо нет такой готовой. А вот &quot;if( x==dx )&quot; можно. :)<br>
В общем, трудная база ожидается...]]></description>
        <author>Славян</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827359</guid>
        <pubDate>Thu, 02 Apr 2020 15:10:59 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827359</link>
        <description><![CDATA[Qraizer: Вас послушать, так возникает вопрос &quot;а нафига тогда C нужен?&quot;. Зачем вам ассемблер в таком случае?]]></description>
        <author>Qraizer</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827358</guid>
        <pubDate>Thu, 02 Apr 2020 15:06:07 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827358</link>
        <description><![CDATA[Славян: Я просто хочу сказать, что выбор основ (аксиом) крайне важен. Столько раз сталкивался с тем, что именно этот шаг самый трудный. Вон, Си-шники тоже, наверное, хотели рационально сделать &quot;A = B+C&quot; для матриц, но не смогли и пришлось целый почти новый язык сочинить для этой перегрузки оператора &#39;+&#39;; а вы тут так просто обмолвились про &quot;ax=bx&quot; (плагины&#33;). :blush:]]></description>
        <author>Славян</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827355</guid>
        <pubDate>Thu, 02 Apr 2020 14:53:42 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827355</link>
        <description><![CDATA[Jin X: <strong class='tag-b'>Славян</strong>, у меня нет пока ничего. Я ж говорю, что это всё нужно ещё проработать. Но этот вопрос решаемый. Навскидку, плагины могут содержать списки регулярных выражений (не обязательно стандартные RegExp, а свои), на соответствие которым будут проверяться выражения в исходнике. Возможно, это не самый лучший вариант, но один из возможных. Более оптимальные идеи могут прийти, если заняться изучением технологии парсинга исходных текстов и создания компиляторов, в которых я пока не шарю.<br>
Я ж говорю, что одна из основных проблем – найти время на всё это.]]></description>
        <author>Jin X</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827334</guid>
        <pubDate>Thu, 02 Apr 2020 11:37:43 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827334</link>
        <description><![CDATA[Славян: Просто трудно представить себе плагин, кой &#39;=&#39; переопределяет/доопределяет. Покажете? Или у вас и для формата плагина будет некий свой язык?..]]></description>
        <author>Славян</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827331</guid>
        <pubDate>Thu, 02 Apr 2020 11:17:24 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827331</link>
        <description><![CDATA[Jin X: <strong class='tag-b'>Славян</strong>, тут основные идеи, вернее лишь часть. Все эти ax=bx; mov eax,[edx*3]; add ax,cx+cf; add eax,edx*4+0x1000; .push eax,edx { ...code... } и пр. будут в отдельных плагинах, которые можно подключать при желании.<br>
Как в fasm/nasm сейчас? Если не указана разрядность, подразумевается 16 бит. Если не указана секция, подразумевается .code и т.д.<br>
И здесь, если не указана платформа, подразумевается полный набор x86-64 (и соответствующий плагин). Если не указан charset, подразумевается utf8. Не указан размер таба, подразумевается 4 (или 8).<br>
А так можно будет и выравнивание данных (по умолчанию, как в ЯВУ) указывать. И соглашение о вызовах (как в masm), и даже автоматически сохраняемые в процедурах регистры (всегда или если только они используются).<br>
И можно проверки включать и выключать. К примеру, используешь imul, а тип данных – беззнаковых, получи warning. Если нужно, конечно, по умолчанию выключено.]]></description>
        <author>Jin X</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827296</guid>
        <pubDate>Thu, 02 Apr 2020 07:26:12 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827296</link>
        <description><![CDATA[Славян: Хм-м-м... &quot;if( x==y )&quot; делаете, а &quot;ax=bx&quot; даже не написали&#33; А ведь в С-- уже таковое было&#33;&#33; :P]]></description>
        <author>Славян</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827284</guid>
        <pubDate>Thu, 02 Apr 2020 00:30:38 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827284</link>
        <description><![CDATA[JoeUser: Всем привет&#33;<br>
<br>
Тему создаю просто для отделения вопросов сабжа из темы &quot;<a class='tag-url' href='https://forum.sources.ru/index.php?showtopic=417875' target='_blank'>fasm синтаксис</a>&quot;.<br>
<br>
<strong class='tag-b'>Предыстория</strong><br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Jin X</span><div class='quote '>Вот захочу я свой асм создать (вернее, я уже хочу... начну, хотел сказать), а там такое будет&#33; Тогда вообще непонятно станет, как дальше жать.</div></div>]]></description>
        <author>JoeUser</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827280</guid>
        <pubDate>Wed, 01 Apr 2020 22:12:04 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827280</link>
        <description><![CDATA[Jin X: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=417895&view=findpost&p=3827254'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Pavia &#064; <time class="tag-quote__quoted-time" datetime="2020-04-01T17:51:09+00:00">01.04.20, 17:51</time></span><div class='quote '>А что вас останавливает начать?</div></div>1. Сначала нужно нормально проработать основные концептуальные особенности этого ассемблера. Делать &quot;ещё один асм&quot; смысла нет. Если уж делать, то так, чтобы он был лучше уже существующих решений по многим параметрам: давал больше возможностей, имел более удобный макродвижок, поддерживал множество выходных форматов файлов и платформ, имел обширную библиотеку функций (хотя бы на уровне masm32) и при этом работал быстро. Он должен вобрать в себя все самые интересные из существующих фишек (например, virtual, match и used из fasm – прекрасные штуки; макросы, которые могут возвращать значения в masm32 – тоже отлично) и иметь свои оригинальные фишки. Должна быть IDE.<br>
<br>
Я записываю идейки в &quot;блокнотик&quot;, конечно, но всё это нужно более чётко проработать. По-хорошему, нужно создать форум, где можно было бы вести обсуждение идей, собирать идеи от людей, что-то выносить и на голосование.<br>
Вот к примеру, несколько из идей:<br>
а) Система плагинов, которая позволяет расширять ассемблер новыми инструкциями, форматами файлов (в fasmg это сделано через макросы, но всё это работает не очень быстро, и я не уверен, что это удобно разрабатывать), директивами-функциями, псевдоинструкциями (к примеру, реализация деления через умножение; те же .if-ы). Возможно, какие-то оптимизирующие модули (скажем, замена mov eax,0 на xor eax,eax – где это допустимо, т.е. тут нужен анализатор), возможность писать mov eax,[edx*3] с автозаменой его на mov eax,[edx*2+edx] и т.п.<br>
б) Макродвижок с возможностью использования Си-подобного синтаксиса, регулярных выражений, поддержкой if-ов на все случаи жизни (в т.ч. однострочные типа if (x==y) { mov ax,bx } else { mov cx,dx }), функций для работы со строками, возможности использования констант внутри строк (как в python/ruby), форматирования строк, удобного копирования участков кода из другого места, поддержкой длинных целых (хотя бы до 1024 бит), работой с числами с плавающей запятой (ни masm32, ни fasm, ни nasm не позволяют делать вычисления с вещественными числами в макросах).<br>
в) Области видимости переменных, процедур, меток, возможность их объявления в любом месте кода с фактическим их переносом в заданную область. Использование строк в коде (например, mov eax,&amp;&#39;Hello World&#39; будет записывать строку в секцию данных, а в eax – адрес).<br>
г) Включение и выключение разных фишек (которые так же можно проверять через if-ы). Например, AT&amp;T-формата, GAS-подобных указаний размерности (movl, addb), разного порядка байтов в строковых константах. <br>
д) Генератор чистого исходника (т.е. после препроцессора). Испорт и экспорт в/из других ассемблеров.<br>
е) Портал для хранения (и автоматической установки/загрузки) библиотек, include&#39;ов, плагинов.<br>
И пр...<br>
<br>
2. Ну и самое интересное (главная сложность): этому всему (как разработке идеи, так и написанию кода) нужно посвятить довольно много времени. Плюс изучить много чего (те же принципы создания компиляторов, все существующие ассемблеры, файловые форматы и пр, пр, пр.). Если б мне было нечем заняться, было бы другое дело. Но сейчас я не готов выделять столько времени на эту разработку...<br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Это сообщение было перенесено сюда или объединено из темы &quot;<a class='tag-url' href='https://forum.sources.ru/index.php?showtopic=417875' target='_blank'>fasm синтаксис</a>&quot;</span></span>]]></description>
        <author>Jin X</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827254</guid>
        <pubDate>Wed, 01 Apr 2020 17:51:09 +0000</pubDate>
        <title>Разработка своего ассемблера</title>
        <link>https://forum.sources.ru/index.php?showtopic=417895&amp;view=findpost&amp;p=3827254</link>
        <description><![CDATA[Pavia: <strong class='tag-b'>JoeUser</strong><br>
Разработчики ассемблеров давно поняли что главное это мода. Поэтому у каждого свой синтаксис. Это только Зубов умудрился написать один код для 3-х ассемблеров TASM|MASM|NASM. <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=417895&view=findpost&p=3827141'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Jin X &#064; <time class="tag-quote__quoted-time" datetime="2020-03-31T17:56:13+00:00">31.03.20, 17:56</time></span><div class='quote '>Вот захочу я свой асм создать (вернее, я уже хочу... начну, хотел сказать), а там такое будет&#33; Тогда вообще непонятно станет, как дальше жать.</div></div><br>
Вывод в IR LLVM он транслирует код под разные платформы.<br>
<br>
А что вас останавливает начать? Я вот к примеру начал  и не только ассемблер.<br>
<br>
<img class='tag-img' src='https://i.postimg.cc/rpg5qmCx/GIF.gif' alt='user posted image'><br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Это сообщение было перенесено сюда или объединено из темы &quot;<a class='tag-url' href='https://forum.sources.ru/index.php?showtopic=417875' target='_blank'>fasm синтаксис</a>&quot;</span></span>]]></description>
        <author>Pavia</author>
        <category>Assembler</category>
      </item>
	
      </channel>
      </rss>
	