<?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=409268&amp;view=findpost&amp;p=3727525</guid>
        <pubDate>Tue, 13 Jun 2017 14:43:12 +0000</pubDate>
        <title>Перевод из x32 в x64</title>
        <link>https://forum.sources.ru/index.php?showtopic=409268&amp;view=findpost&amp;p=3727525</link>
        <description><![CDATA[Jin X: Тогда сделаем пометку, что &quot;20h – с учётом того, что push rbp/enter 0,0/sub rsp,8 (нужно подчеркнуть) уже сделан&quot; ;) <br>p.s. Да, тут у нас в разделе тишь да гладь...  :unsure:]]></description>
        <author>Jin X</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=409268&amp;view=findpost&amp;p=3727339</guid>
        <pubDate>Tue, 13 Jun 2017 09:21:07 +0000</pubDate>
        <title>Перевод из x32 в x64</title>
        <link>https://forum.sources.ru/index.php?showtopic=409268&amp;view=findpost&amp;p=3727339</link>
        <description><![CDATA[Mikl___: <strong class='tag-b'>Jin X</strong>,<br>
&quot;учет калла&quot; происходит при входе в программу (push reg/enter 0,0/sub rsp,8), а далее каждая функция обрамляется sub rsp,X*10h/add rsp,X*10h для 4 и менее параметров X=2; для 5/6 Х=3; для 7/8 Х=4 и т.д.<br>
А тему поднял потому как отвечать пока некому  :scratch: а некрофилов я и сам не люблю  :jokingly:]]></description>
        <author>Mikl___</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=409268&amp;view=findpost&amp;p=3727255</guid>
        <pubDate>Tue, 13 Jun 2017 06:23:57 +0000</pubDate>
        <title>Перевод из x32 в x64</title>
        <link>https://forum.sources.ru/index.php?showtopic=409268&amp;view=findpost&amp;p=3727255</link>
        <description><![CDATA[Jin X: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=409268&view=findpost&p=3727249'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Mikl___ &#064; <time class="tag-quote__quoted-time" datetime="2017-06-13T05:16:26+00:00">13.06.17, 05:16</time></span><div class='quote '>sub rsp,20h &lt;--для 4-х и менее параметров</div></div>Может, 28h всё-таки? :whistle:<br>
С учётом call&#39;а.<br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray">p.s. Welcome на Исходники, дружище&#33; ;)<br>
Только зачем реанимировать тему годичной давности? :-?</span>]]></description>
        <author>Jin X</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=409268&amp;view=findpost&amp;p=3727249</guid>
        <pubDate>Tue, 13 Jun 2017 05:16:26 +0000</pubDate>
        <title>Перевод из x32 в x64</title>
        <link>https://forum.sources.ru/index.php?showtopic=409268&amp;view=findpost&amp;p=3727249</link>
        <description><![CDATA[Mikl___: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Как-то так (не проверял):<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">CollapsedWrap disabledLine numbers off</div><div class="code_line">...</div><div class="code_line">push rbp</div><div class="code_line">lea rdi, format; формат строки</div><div class="code_line">mov rsi, rax; 1 параметр</div><div class="code_line">mov rax, 0</div><div class="code_line">call &nbsp; &nbsp;printf &nbsp;</div><div class="code_line">pop rbp</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script></div></div>а проверить стоит&#33; для целочисленных параметров должно быть так <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">sub rsp,20h &#60;--для 4-х и менее параметров</div><div class="code_line">mov r9,3-й_параметр</div><div class="code_line">mov r8,2-й_параметр</div><div class="code_line">mov rdx,1-й_параметр</div><div class="code_line">lea rcx,строка_содержащая_формат</div><div class="code_line">call printf</div><div class="code_line">add rsp,20h</div></ol></div></div></div></div>]]></description>
        <author>Mikl___</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=409268&amp;view=findpost&amp;p=3679965</guid>
        <pubDate>Wed, 03 Aug 2016 11:26:36 +0000</pubDate>
        <title>Перевод из x32 в x64</title>
        <link>https://forum.sources.ru/index.php?showtopic=409268&amp;view=findpost&amp;p=3679965</link>
        <description><![CDATA[shm: Для тех, кто в танке, сишные функции в x86-64 <strong class='tag-b'>передают параметры через регистры</strong>, а не через стек как у тебя. <br>
План действий:<br>
1 Скомпилируй обычную сишную программу с printf.<br>
2. Открой в дизассемблере, найти вызов printf (для mingw элементарно с gbd).<br>
3. Из ассемблерного листинга запомни через какие регистры передаются параметры.<br>
4. Повтори тоже самое в своей asm-программе.<br>
5. PROFIT <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="2016-08-03T11:40:00+00:00">03.08.16, 11:40</time></span></span><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">...</div><div class="code_line">push rbp</div><div class="code_line">lea rdi, format; формат строки</div><div class="code_line">mov rsi, rax; 1 параметр </div><div class="code_line">mov rax, 0 </div><div class="code_line">call &nbsp; &nbsp;printf &nbsp;</div><div class="code_line">pop rbp</div><div class="code_line">...</div></ol></div></div></div></div>]]></description>
        <author>shm</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=409268&amp;view=findpost&amp;p=3679936</guid>
        <pubDate>Wed, 03 Aug 2016 08:05:54 +0000</pubDate>
        <title>Перевод из x32 в x64</title>
        <link>https://forum.sources.ru/index.php?showtopic=409268&amp;view=findpost&amp;p=3679936</link>
        <description><![CDATA[OS2_: Пытаюсь вызвать сишную <strong class='tag-b'>printf</strong>, в 32 битной версии она отлично вызывается и ей передаются все аргументы.]]></description>
        <author>OS2_</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=409268&amp;view=findpost&amp;p=3679899</guid>
        <pubDate>Tue, 02 Aug 2016 19:53:20 +0000</pubDate>
        <title>Перевод из x32 в x64</title>
        <link>https://forum.sources.ru/index.php?showtopic=409268&amp;view=findpost&amp;p=3679899</link>
        <description><![CDATA[shm: <strong class='tag-b'>OS2_</strong>, так printf-то откуда???? Я все ответа на мой вопрос не вижу. Ты сишную  printf пытаешься вызвать? <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="2016-08-02T19:56:37+00:00">02.08.16, 19:56</time></span></span><br>
Вообще, если речь о вызове функции для яву, то в x86-64 обычно параметры передаются <a class='tag-url' href='http://www.x86-64.org/documentation/abi.pdf' target='_blank'>через регистры</a>, а не стек.]]></description>
        <author>shm</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=409268&amp;view=findpost&amp;p=3679832</guid>
        <pubDate>Tue, 02 Aug 2016 17:16:37 +0000</pubDate>
        <title>Перевод из x32 в x64</title>
        <link>https://forum.sources.ru/index.php?showtopic=409268&amp;view=findpost&amp;p=3679832</link>
        <description><![CDATA[OS2_: <strong class='tag-b'>Славян</strong><br>
Пробовал и так делать.<br>
Но вылетает именно при вызове printf...]]></description>
        <author>OS2_</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=409268&amp;view=findpost&amp;p=3679809</guid>
        <pubDate>Tue, 02 Aug 2016 13:47:16 +0000</pubDate>
        <title>Перевод из x32 в x64</title>
        <link>https://forum.sources.ru/index.php?showtopic=409268&amp;view=findpost&amp;p=3679809</link>
        <description><![CDATA[Славян: Т.к. 64-битные регистры длиной в 8 байт, то (по аналогии) надо ж наверное к RSP добавлять 2*8 = 16 байт, а не 8. :scratch:]]></description>
        <author>Славян</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=409268&amp;view=findpost&amp;p=3679770</guid>
        <pubDate>Tue, 02 Aug 2016 06:50:23 +0000</pubDate>
        <title>Перевод из x32 в x64</title>
        <link>https://forum.sources.ru/index.php?showtopic=409268&amp;view=findpost&amp;p=3679770</link>
        <description><![CDATA[OS2_: Это всего-навсего тестовый пример, который я пытался перевести на 64-бита. Вот полный листинг asm файла:<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">%if ASM_WIN64</div><div class="code_line">%else</div><div class="code_line">.686</div><div class="code_line">.MODEL FLAT, C</div><div class="code_line">.STACK</div><div class="code_line">%endif</div><div class="code_line">.DATA</div><div class="code_line">.CODE</div><div class="code_line">_Format BYTE &quot;Test %s!&quot;, 10, 13, 0</div><div class="code_line">.CODE</div><div class="code_line">EXTRN &nbsp;printf : proc</div><div class="code_line">EXTRN &nbsp;readName : proc</div><div class="code_line">&nbsp;</div><div class="code_line">sayHello PROC</div><div class="code_line">call readName; eax = readName()</div><div class="code_line">&nbsp;</div><div class="code_line">%if ASM_WIN64</div><div class="code_line">;printf(rbx,rax)</div><div class="code_line">lea rbx, _Format</div><div class="code_line">push rax</div><div class="code_line">push rbx</div><div class="code_line">call printf</div><div class="code_line">add rsp, 8</div><div class="code_line">%else</div><div class="code_line">;printf(ebx,eax)</div><div class="code_line">lea ebx, _Format</div><div class="code_line">push eax</div><div class="code_line">push ebx</div><div class="code_line">call printf</div><div class="code_line">add esp, 8</div><div class="code_line">%endif</div><div class="code_line">&nbsp;</div><div class="code_line">;retn</div><div class="code_line">sayHello ENDP</div><div class="code_line">&nbsp;</div><div class="code_line">asm_finit PROC</div><div class="code_line">finit</div><div class="code_line">ret</div><div class="code_line">asm_finit ENDP</div><div class="code_line">&nbsp;</div><div class="code_line">END</div></ol></div></div></div></div>]]></description>
        <author>OS2_</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=409268&amp;view=findpost&amp;p=3679760</guid>
        <pubDate>Mon, 01 Aug 2016 19:51:04 +0000</pubDate>
        <title>Перевод из x32 в x64</title>
        <link>https://forum.sources.ru/index.php?showtopic=409268&amp;view=findpost&amp;p=3679760</link>
        <description><![CDATA[shm: <strong class='tag-b'>OS2_</strong>, слишком мало данных. Нужно знать каким образом printf осуществляет передачу параметров.]]></description>
        <author>shm</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=409268&amp;view=findpost&amp;p=3679750</guid>
        <pubDate>Mon, 01 Aug 2016 18:04:59 +0000</pubDate>
        <title>Перевод из x32 в x64</title>
        <link>https://forum.sources.ru/index.php?showtopic=409268&amp;view=findpost&amp;p=3679750</link>
        <description><![CDATA[OS2_: Всем доброго времени суток&#33;<br>
Подскажите как корректно перевести такой простенький 32-разрядный код, под 64-разряда:<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">...</div><div class="code_line">_Format BYTE &quot;Test %s!&quot;, 10, 13, 0</div><div class="code_line">...</div><div class="code_line">call readName ;здесь я читаю строку с консоли</div><div class="code_line">lea ebx, _Format</div><div class="code_line">push eax</div><div class="code_line">push ebx</div><div class="code_line">call printf ;а здесь, вывожу ее на экран</div><div class="code_line">add esp, 8</div><div class="code_line">...</div></ol></div></div></div></div><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">...</div><div class="code_line">_Format BYTE &quot;Test %s!&quot;, 10, 13, 0</div><div class="code_line">...</div><div class="code_line">lea rbx, _Format</div><div class="code_line">push rax</div><div class="code_line">push rbx</div><div class="code_line">call printf</div><div class="code_line">add rsp, 8</div><div class="code_line">...</div></ol></div></div></div></div><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">call printf</div></ol></div></div></div></div><br>
<br>
Заранее спасибо&#33;]]></description>
        <author>OS2_</author>
        <category>Assembler</category>
      </item>
	
      </channel>
      </rss>
	