l2-unlegits/docs/l2client_internal_hooks.html
alexey.min 043d61633e Docs
2012-02-06 09:14:22 +00:00

1703 lines
249 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Форум программистов [Powered by Invision Power Board]</title>
</head><body alink="#000000" bgcolor="#ffffff" vlink="#000000" link="#000000">
<table summary="table0" align="center" border="0" cellpadding="6" width="90%">
<tbody><tr>
<td><b><font color="#4c77b6" size="5" face="arial"><b>Версия для печати темы</b></font><b></b>
<br><font color="#000000" size="2" face="arial"><b><a href="http://forum.vingrad.ru/s/972ea346b374795897bc9f26380a35c7/act-ST/f-471/t-239105.html">Нажмите сюда для просмотра этой темы в оригинальном формате</a></b></font>
</b></td>
</tr>
<tr>
<td><font color="#000000" size="2" face="arial"><b>Форум программистов &gt; C/C++: Для новичков &gt; <font color="red">msvc2008 bug???</font></b></font></td>
</tr>
</tbody></table>
<br>
<br> <table summary="table1" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 6.12.2008, 19:14</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"></font><div class="postcolor"><table class="code" summary="table2" cellspacing="0"><tbody><tr><td><b>Код</b></td></tr><tr><td class="code"><script language="javascript" type="text/javascript">includeSyntax('cpp');</script><code id="cpp_kNjNjM"><br>#include&nbsp;"stdafx.h"<br><br>__declspec(naked)&nbsp;int Foo(int arg)<br>{__asm{<br>&nbsp;&nbsp;&nbsp;&nbsp;_emit 0xCC<br>&nbsp;&nbsp;&nbsp;&nbsp;mov eax,[arg]<br>&nbsp;&nbsp;&nbsp;&nbsp;ret<br>}};<br><br>int _tmain(int argc, _TCHAR* argv[])<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;return Foo(1);<br>}<br></code></td></tr></tbody></table></div><script language="javascript" type="text/javascript">highlightSyntax('cpp_kNjNjM','cpp');</script><font color="#000000" size="3" face="arial"><br></font><div class="postcolor"><table class="code" summary="table3" cellspacing="0"><tbody><tr><td><b>Код</b></td></tr><tr><td class="code"><script language="javascript" type="text/javascript">includeSyntax('asm');</script><code id="asm_MmEzYz"><br>00401000&nbsp;&nbsp;/$&nbsp;&nbsp;CC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INT3<br>00401001&nbsp;&nbsp;|.&nbsp;&nbsp;8B45
08&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV EAX,DWORD
PTR&nbsp;[EBP+8]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&lt;&lt;&lt;&lt;&lt;&nbsp;ebp
o_O<br>00401004&nbsp;&nbsp;\.&nbsp;&nbsp;C3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RETN<br>00401005&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INT3<br>...<br>0040100F&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INT3<br>00401010&nbsp;&nbsp;/$&nbsp;&nbsp;6A 01&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PUSH 1<br>00401012&nbsp;&nbsp;|.&nbsp;&nbsp;E8 E9FFFFFF&nbsp;&nbsp;&nbsp;CALL cpp_asm_.00401000<br>00401017&nbsp;&nbsp;|.&nbsp;&nbsp;83C4 04&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADD ESP,4<br>0040101A&nbsp;&nbsp;\.&nbsp;&nbsp;C3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RETN<br></code></td></tr></tbody></table></div><script language="javascript" type="text/javascript">highlightSyntax('asm_MmEzYz','asm');</script><font color="#000000" size="3" face="arial"><br>это баг или&nbsp;"фича"? о_О</font></td>
</tr>
</tbody></table>
<br> <table summary="table4" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 6.12.2008, 19:23</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">А что ты ожидал? В ebp хранится указатель на фрейм:<br>http://en.wikipedia.org/wiki/Frame_pointer</font></td>
</tr>
</tbody></table>
<br> <table summary="table5" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 6.12.2008, 19:33</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>Kallikanzarid</b>, фрейма нету, какбэ<br>читай код в 1м посте полностью</font></td>
</tr>
</tbody></table>
<br> <table summary="table6" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: MAKCim</b> 6.12.2008, 19:44</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>GoldFinch</b>,&nbsp;<br>хм, реально баг получается<br></font></td>
</tr>
</tbody></table>
<br> <table summary="table7" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 6.12.2008, 20:03</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">Точно, должно быть esp&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/crazy.gif" src="l2client_internal_hooks_files/crazy.gif" alt="smile">&nbsp;<br>Попробуй поставить сервис пак, может, поможет.</font></td>
</tr>
</tbody></table>
<br> <table summary="table8" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: J0ker</b> 7.12.2008, 01:01</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">все верно<br>в прологе esp сохраняется в ebp, и от ebp считаются аргументы<br>так что все правильно<br>неправильно в naked использовать аргумент - т.к. компайлер плюет, что вы отказались от пролога и эпилога</font></td>
</tr>
</tbody></table>
<br> <table summary="table9" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: dumb</b> 7.12.2008, 04:46</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">хм.&nbsp;http://msdn.microsoft.com/en-us/library/4d12973a(VS.80).aspx&nbsp;про
аргументы ничего такого не сказано, однако упомянуто авто-отключение
Frame pointer optimization для naked функций. т.е. компилер
рассчитывает на то, что руками фрэйм таки будет создан, что он и
демонстрирует.</font></td>
</tr>
</tbody></table>
<br> <table summary="table10" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 7.12.2008, 08:54</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>GoldFinch</b>, Если
нет желания использовать фрейм, попробуй __fastcall. ЕМНИП, два двойных
слова ты с его помощью без проблем передашь даже без фрейма. В принципе
можно одним из них передавать указатель на объект, в котором хранятся
остальные параметры.</font></td>
</tr>
</tbody></table>
<br> <table summary="table11" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: J0ker</b> 7.12.2008, 09:04</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">ну прям лень фрейм выставить - 2 инструкции в начале и 2 в конце</font></td>
</tr>
</tbody></table>
<br> <table summary="table12" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 7.12.2008, 10:29</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>Kallikanzarid</b>, в
msdn сказано что при __fastcall компилятор не гарантирует очередность
параметров, т.е. неизвестно какой окажется в eax а какой edx. Кроме
того, в большинстве случаев аргументы лежат в стеке.<br><br><b>J0ker</b>,
я привык к тому что когда я пишу на асме, я пишу как я хочу, а не так
как того хочет конпилятор. может у меня ограничения на длину кода, мне
тогда этот фрейм впихнуть некуда, более того, он в ряде случаев просто
не нужен.<br></font></td>
</tr>
</tbody></table>
<br> <table summary="table13" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 7.12.2008, 14:26</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>GoldFinch</b>, Если
бы ты писал под мобильники, то юзал бы явно не студию. Уменьшение
размера кода даже на килобайт абсолютно незаметно. Теоретик, блин&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/smile.gif" src="l2client_internal_hooks_files/smile.gif" alt="smile"><br><br>ЗЫ: Зачем тебе нужны naked функции?<br><br>Кстати, если тебе так противен фрейм, можешь спокойно высчитывать расположение параметров сам.</font></td>
</tr>
</tbody></table>
<br> <table summary="table14" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 7.12.2008, 15:20</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>Kallikanzarid</b>, если бы ты писал на асме, ты бы знал зачем надо уменьшать код, зачем нужны naked функции<br>высчитывать расположение параметров самому глупо, этим должен заниматься компилятор, тем более что это асм встроенный в ЯВУ</font></td>
</tr>
</tbody></table>
<br> <table summary="table15" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 7.12.2008, 15:45</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table16" cellspacing="0"><tbody><tr><td><b>Цитата</b></td></tr><tr><td class="quote"><br>если бы ты писал на асме, ты бы знал зачем надо уменьшать код, зачем нужны naked функции<br></td></tr></tbody></table></div><br>О да, я такой глупый, просто оторопь берет!&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/crazy.gif" src="l2client_internal_hooks_files/crazy.gif" alt="smile">&nbsp;Не желаю экономить 10 байт на функцию - просто кошмар!<br><br>Ты хоть профилировщик запускал прежде, чем прибегать к таким мерам? Или тебе 4мб L2-кэша заранее мало?<br><br><div class="postcolor"><table class="quote" summary="table17" cellspacing="0"><tbody><tr><td><b>Цитата</b></td></tr><tr><td class="quote"><br>высчитывать расположение параметров самому глупо, этим должен заниматься компилятор<br></td></tr></tbody></table></div><br>Писать пролог самому глупо, этим должен заниматься компилятор.<br><br>ЗЫ:<br><div class="postcolor"><table class="quote" summary="table18" cellspacing="0"><tbody><tr><td><b>Цитата</b></td></tr><tr><td class="quote"><br>при __fastcall компилятор не гарантирует очередность параметров, т.е. неизвестно какой окажется в eax а какой edx.<br></td></tr></tbody></table></div><br>А тебе зачем это знать? Обращайся к параметрам по имени.</font></td>
</tr>
</tbody></table>
<br> <table summary="table19" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 7.12.2008, 16:37</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>Kallikanzarid</b>, вот есть у меня например такой код:<br></font><div class="postcolor"><table class="code" summary="table20" cellspacing="0"><tbody><tr><td><b>Код</b></td></tr><tr><td class="code"><script language="javascript" type="text/javascript">includeSyntax('cpp');</script><code id="cpp_mODM"><br>__declspec(naked)&nbsp;ttt func(...)&nbsp;{__asm jmp&nbsp;$+5 __asm nop __asm push rva __asm call imp_core }<br><br>__declspec(naked)&nbsp;void imp_core(int rva)<br>//make import<br>{ __asm{<br>&nbsp;&nbsp;&nbsp;&nbsp;//_emit 0xCC<br>&nbsp;&nbsp;&nbsp;&nbsp;pop eax // =func+0x10<br>&nbsp;&nbsp;&nbsp;&nbsp;pop edx // =rva<br>&nbsp;&nbsp;&nbsp;&nbsp;add edx,[g_hCore]&nbsp;// = VA<br>&nbsp;&nbsp;&nbsp;&nbsp;push edx<br>&nbsp;&nbsp;&nbsp;&nbsp;sub edx,eax //=org_func-(func+0x10)<br>&nbsp;&nbsp;&nbsp;&nbsp;add edx,0x10-5 //=org_func-(func+5)<br>&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;[eax-0x10+1],edx<br>&nbsp;&nbsp;&nbsp;&nbsp;ret<br>}}<br></code></td></tr></tbody></table></div><script language="javascript" type="text/javascript">highlightSyntax('cpp_mODM','cpp');</script><font color="#000000" size="3" face="arial"><br>куда здесь воткнуть ebp фреймы?</font></td>
</tr>
</tbody></table>
<br> <table summary="table21" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 7.12.2008, 16:45</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">Боюсь даже представить&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/smile.gif" src="l2client_internal_hooks_files/smile.gif" alt="smile">&nbsp;А что делает этот код?</font></td>
</tr>
</tbody></table>
<br> <table summary="table22" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: dumb</b> 7.12.2008, 16:53</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">чем бы не тешилось...<br>сам же запутаешься в этом г..не(иных слов не подбирается) через неделю.<br>остается надеяться, что эти извращения не имеют отношения к чему-то, чем будут пользоваться люди.</font></td>
</tr>
</tbody></table>
<br> <table summary="table23" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 7.12.2008, 17:01</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">реализует&nbsp;"ленивые"&nbsp;импорты<br>да там же все понятно, что он делает, всего-то десяток строчек</font></td>
</tr>
</tbody></table>
<br> <table summary="table24" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 7.12.2008, 17:46</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>dumb</b>, это
хорошо, что ты не понял этого кода. Он призван вызывать священный
трепет, а то и ужас, перед асмом у тех ламеров, кто полезет с ИДА
узнавать какие импорты юзаются в моей проге. Хотя код крайне тривиален,
я думаю найдется немало людей которые испугаются увидев это, и не
станут копать мою прогу.<br>=)</font></td>
</tr>
</tbody></table>
<br> <table summary="table25" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 7.12.2008, 17:51</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table26" cellspacing="0"><tbody><tr><td><b>Цитата</b></td></tr><tr><td class="quote"><br>Хотя код крайне тривиален, я думаю найдется немало людей которые испугаются увидев это, и не станут копать мою прогу.<br></td></tr></tbody></table></div><br>Главное, чтобы босс был не в их числе&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile">&nbsp;</font></td>
</tr>
</tbody></table>
<br> <table summary="table27" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: J0ker</b> 7.12.2008, 19:06</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table28" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;7.12.2008,&nbsp;&nbsp;10:29&nbsp;<a href="http://forum.vingrad.ru/findpost-1719109.html" onclick="return getPost(1719109);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1719109);"></a>)</td></tr><tr><td class="quote">J0ker,
я привык к тому что когда я пишу на асме, я пишу как я хочу, а не так
как того хочет конпилятор. может у меня ограничения на длину кода, мне
тогда этот фрейм впихнуть некуда, более того, он в ряде случаев просто
не нужен.</td></tr></tbody></table></div><br>в документации оговорена спецификация naked - во-первых<br>во-вторых
- как ты хочешь, что-бы компилятор посчитал аргументы? он же не знает
твои манипуляции со стеком до использования аргументов - ИМХО вполне
оправдано что расчет аргументов опирается на предположение, что фрейм
установлен - иначе никак<br>если не нужен фрейм - считай аргументы сам - компилятор это сделать иначе не может<br><br><b>Добавлено через 3 минуты и 10 секунд</b><br><div class="postcolor"><table class="quote" summary="table29" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;7.12.2008,&nbsp;&nbsp;17:46&nbsp;<a href="http://forum.vingrad.ru/findpost-1719365.html" onclick="return getPost(1719365);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1719365);"></a>)</td></tr><tr><td class="quote">перед асмом у тех ламеров, кто полезет с ИДА&nbsp;</td></tr></tbody></table></div><br>несколько противоречивое высказывание&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile">&nbsp;</font></td>
</tr>
</tbody></table>
<br> <table summary="table30" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 7.12.2008, 19:34</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>J0ker</b>, впринципе логично, что компилятор не разбирает асм-код<br>хотя могли бы это и сделать... не бином ньютона =\</font></td>
</tr>
</tbody></table>
<br> <table summary="table31" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: J0ker</b> 7.12.2008, 19:38</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table32" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;7.12.2008,&nbsp;&nbsp;19:34&nbsp;<a href="http://forum.vingrad.ru/findpost-1719423.html" onclick="return getPost(1719423);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1719423);"></a>)</td></tr><tr><td class="quote">хотя могли бы это и сделать... не бином ньютона =\&nbsp;</td></tr></tbody></table></div><br>бином<br>предположим, ты выделяешь на стеке массив с размером, взятым из одного из параметров - в стиле C99<br></font></td>
</tr>
</tbody></table>
<br> <table summary="table33" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 7.12.2008, 19:45</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>J0ker</b>, хм... ну тогда стоило бы выдавать ошибку компиляции, или хотябы явно написать об этой&nbsp;"фиче"&nbsp;в документации %)</font></td>
</tr>
</tbody></table>
<br> <table summary="table34" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: J0ker</b> 7.12.2008, 20:23</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"></font><div class="postcolor"><table class="quote" summary="table35" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;7.12.2008,&nbsp;&nbsp;19:45)</td></tr><tr><td class="quote"><b>J0ker</b>, хм... ну тогда стоило бы выдавать ошибку компиляции, или хотябы явно написать об этой&nbsp;"фиче"&nbsp;в документации %)</td></tr></tbody></table></div><font color="#000000" size="3" face="arial"><br>http://msdn.microsoft.com/en-us/library/5ekezyy2(VS.80).aspx<br>http://msdn.microsoft.com/en-us/library/4d12973a(VS.80).aspx<br></font><div class="postcolor"><table class="quote" summary="table36" cellspacing="0"><tbody><tr><td><b>Цитата</b></td></tr><tr><td class="quote"><br>Frame
pointer optimization (the /Oy compiler option) is not recommended, but
it is automatically suppressed for a naked function.<br></td></tr></tbody></table></div><font color="#000000" size="3" face="arial"></font></td>
</tr>
</tbody></table>
<br> <table summary="table37" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 8.12.2008, 00:46</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">раз уж речь пошла о пользе&nbsp;<i>naked</i>, подскажите как тут избавиться от асма:<br><br></font><div class="postcolor"><table class="code" summary="table38" cellspacing="0"><tbody><tr><td><b>Код</b></td></tr><tr><td class="code"><script language="javascript" type="text/javascript">includeSyntax('cpp');</script><code id="cpp_g0OTQ3"><br>//hook #1<br>void __stdcall OnRenderHook(FPlayerSceneNode *PlayerSceneNode,FRenderInterface *RenderInterface)&nbsp;;<br>void __thiscall FPlayerSceneNode::Render(FRenderInterface *);<br>__declspec(naked)&nbsp;void __stdcall Hook_FPlayerSceneNode_Render(FRenderInterface *)&nbsp;<br>{_asm{<br>&nbsp;&nbsp;&nbsp;&nbsp;push dword ptr&nbsp;[esp+4]//arg1<br>&nbsp;&nbsp;&nbsp;&nbsp;push ecx<br>&nbsp;&nbsp;&nbsp;&nbsp;push dword ptr&nbsp;[esp+4]//arg1<br>&nbsp;&nbsp;&nbsp;&nbsp;call FPlayerSceneNode::Render<br>&nbsp;&nbsp;&nbsp;&nbsp;call OnRenderHook<br>&nbsp;&nbsp;&nbsp;&nbsp;ret 4<br>}}<br><br>//hook #2<br>void __thiscall ALineagePlayerController::PlayerCalcView(class AActor *, class FVector *, class FRotator *);<br>__declspec(naked)&nbsp;void
__stdcall Hook_ALineagePlayerController_PlayerCalcView(class AActor *,
class FVector *, class FRotator *)&nbsp;<br>{_asm{<br>&nbsp;&nbsp;&nbsp;&nbsp;mov eax,dword ptr&nbsp;[esp+0xC]//arg3<br>&nbsp;&nbsp;&nbsp;&nbsp;mov eax,dword ptr&nbsp;[eax+4]//2nd field<br>&nbsp;&nbsp;&nbsp;&nbsp;mov dword ptr&nbsp;[g_Direction],eax<br>&nbsp;&nbsp;&nbsp;&nbsp;jmp ALineagePlayerController::PlayerCalcView<br>}}<br></code></td></tr></tbody></table></div><script language="javascript" type="text/javascript">highlightSyntax('cpp_g0OTQ3','cpp');</script><font color="#000000" size="3" face="arial"></font></td>
</tr>
</tbody></table>
<br> <table summary="table39" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: mes</b> 8.12.2008, 10:52</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/offtopic.gif" src="l2client_internal_hooks_files/offtopic.gif" alt="smile">&nbsp;в
упор не понимаю, почему не сделать делегацию средствами языка (cpp), a
нужно прибегать к низкоуровневым непереносимым средствам ...&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/wacko.gif" src="l2client_internal_hooks_files/wacko.gif" alt="smile">&nbsp;<br></font></td>
</tr>
</tbody></table>
<br> <table summary="table40" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 8.12.2008, 11:07</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>GoldFinch</b>, ur crazy&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/crazy.gif" src="l2client_internal_hooks_files/crazy.gif" alt="smile">&nbsp;<br>Пожалуйста,
скажи, что это профайлер показал, что необходимо вручную передавать
параметр через регистр. Или использовать глобальную переменную. Или
вручную расчитывать смещение поля в объекте (ничего, кстати, что это
нарушает инкапсуляцию?). Не говоря уже о том, что рекомендуется
передавать объекты по ссылкам, а не по указателям. Я начинаю боятся за
будущее Земли.&nbsp;<br><br>ЗЫ: твой код неэффективен. Ты два раза
заносишь в стек один и тот же параметр. Настоящий Программист бы сделал
так, чтобы функция Render после вызова оставляла его в стеке, а функция
OnRender - использовала повторно. Ты неэффективен!</font></td>
</tr>
</tbody></table>
<br> <table summary="table41" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: dumb</b> 8.12.2008, 11:40</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">тьфу ты. неужели вместо
того, чтобы нормально описать ситуевину, мол&nbsp;"развешиваю хуки в
игрушке", надо было&nbsp;"выеживаться"&nbsp;в потугах самоутверждения?
этот вопрос риторический.<br><br>в данном случае избавляться от асма
imho особого смысла нет - тебе нужно сделать совершенно определенные
низкоуровневые трики, и если их пытаться переписать на С, получишь кучу
неоднозначностей и условностей, не говоря уже о том, что код получится,
скорее всего, гораздо менее&nbsp;"прозрачным".<br>так же как и нет
смысла вкрячивать в высокоуровневый код примитивную защиту извращаясь с
дефайнами и вставками - для снятия оной вовсе не обязательно, чтобы
механизм понимал любой&nbsp;"ламер"&nbsp;- достаточно одного немного
продвинутого заинтересованного человека.<br><br><b>mes</b>,&nbsp;<b>Kallikanzarid</b>,
вы не учитываете того, что работа идет с готовым бинарным кодом.
товарищ путем предоставления обрывков информации по сути провоцирует
нас на такие бессмысленные(в конечном счете) комментарии.</font></td>
</tr>
</tbody></table>
<br> <table summary="table42" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 8.12.2008, 12:10</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">Чьорт, меня затроллил закомплексованный труъ-ассемблерщег&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/wacko.gif" src="l2client_internal_hooks_files/wacko.gif" alt="smile">&nbsp;*ушел пить йад*</font></td>
</tr>
</tbody></table>
<br> <table summary="table43" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: ksili</b> 8.12.2008, 12:26</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table44" cellspacing="0"><tbody><tr><td><b>Цитата</b>(Kallikanzarid&nbsp;@&nbsp;&nbsp;7.12.2008,&nbsp;&nbsp;18:26&nbsp;<a href="http://forum.vingrad.ru/findpost-1719221.html" onclick="return getPost(1719221);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1719221);"></a>)</td></tr><tr><td class="quote">Если бы ты писал под мобильники, то юзал бы явно не студию</td></tr></tbody></table></div><br>Прикинь, я пишу под WinMobile и использую-таки студию</font></td>
</tr>
</tbody></table>
<br> <table summary="table45" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: mes</b> 8.12.2008, 12:42</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table46" cellspacing="0"><tbody><tr><td><b>Цитата</b>(dumb&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;11:40&nbsp;<a href="http://forum.vingrad.ru/findpost-1719954.html" onclick="return getPost(1719954);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1719954);"></a>)</td></tr><tr><td class="quote">вы не учитываете того, что работа идет с готовым бинарным кодом.&nbsp;</td></tr></tbody></table></div><br>Вместо
того чтоб учитывать все возможные предположения, которых в
действительности может и не быть (так как в другом топике этого же
автора вроде (может и ошибаюсь) подразумевалось о том что исходники на
руках) лучше было бы если бы автор описал бы свою ситуацию. Без этого
будет имхо затруднительно ответить на вопрос:<br><div class="postcolor"><table class="quote" summary="table47" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;00:46&nbsp;<a href="http://forum.vingrad.ru/findpost-1719715.html" onclick="return getPost(1719715);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1719715);"></a>)</td></tr><tr><td class="quote">подскажите как тут избавиться от асма:</td></tr></tbody></table></div><br></font></td>
</tr>
</tbody></table>
<br> <table summary="table48" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 8.12.2008, 13:06</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>Kallikanzarid</b>,&nbsp;"рекомендуется
передавать объекты по ссылкам, а не по указателям"&nbsp;я кнешно не
силен в С++, но какая между ними разница? о_О<br><br><b>dumb</b>, какая разница, для чего нужен код? хуки они и есть хуки... а использование ЯВУ вместо&nbsp;<i>такого</i>&nbsp;асма позволит значительно повысить читаемость:<br><br></font><div class="postcolor"><table class="code" summary="table49" cellspacing="0"><tbody><tr><td><b>Код</b></td></tr><tr><td class="code"><script language="javascript" type="text/javascript">includeSyntax('cpp');</script><code id="cpp_EyMTVi"><br>void __thiscall ALineagePlayerController::PlayerCalcView(class AActor *, class FVector *, class FRotator *);<br>__declspec(naked,noreturn)&nbsp;void __stdcall Hook_ALineagePlayerController_PlayerCalcView(<br>&nbsp;&nbsp;&nbsp;&nbsp;class AActor *, class FVector *, class FRotator *Rotator)&nbsp;<br>{&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;__asm enter 0,0<br>&nbsp;&nbsp;&nbsp;&nbsp;g_Direction=Rotator-&gt;Pitch<br>&nbsp;&nbsp;&nbsp;&nbsp;__asm leave __asm jmp ALineagePlayerController::PlayerCalcView<br>}<br></code></td></tr></tbody></table></div><script language="javascript" type="text/javascript">highlightSyntax('cpp_EyMTVi','cpp');</script><font color="#000000" size="3" face="arial"><br><br>ЗЫ:
а та&nbsp;"примитивная защита"&nbsp;не хуже, чем популярное криптование
символьных имен или импорты по хешам. К тому же ей гораздо удобнее
пользоваться, т.к. функции(методы) вызываются нормально, а не по
указателям.</font></td>
</tr>
</tbody></table>
<br> <table summary="table50" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 8.12.2008, 13:09</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"></font><div class="postcolor"><table class="quote" summary="table51" cellspacing="0"><tbody><tr><td><b>Цитата</b>(ksili&nbsp;@&nbsp;8.12.2008,&nbsp;&nbsp;12:26)</td></tr><tr><td class="quote"><div class="postcolor"><table class="quote" summary="table52" cellspacing="0"><tbody><tr><td><b>Цитата</b>(Kallikanzarid&nbsp;@&nbsp;&nbsp;7.12.2008,&nbsp;&nbsp;18:26&nbsp;<a href="http://forum.vingrad.ru/findpost-1719221.html" onclick="return getPost(1719221);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1719221);"></a>)</td></tr><tr><td class="quote">Если бы ты писал под мобильники, то юзал бы явно не студию</td></tr></tbody></table></div><br>Прикинь, я пишу под WinMobile и использую-таки студию</td></tr></tbody></table></div><font color="#000000" size="3" face="arial"><br>Поди еще .NET используешь&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/crazy.gif" src="l2client_internal_hooks_files/crazy.gif" alt="smile">&nbsp;Я имел ввиду настоящие мобильники, с низкими вычислительными мощностями.<br><br><b>Добавлено через 7 минут и 25 секунд</b><br><b>GoldFinch</b>,
ссылка на протяжении своей жизни гарантированно указывает на один и тот
же объект, то позволяет компилятору включить множество оптимизаций,
которые он (справедливо) боится применять к указателям.<br>http://www.tantalon.com/pete/cppopt/main.htm&nbsp;- устаревший ресурс, но многое все еще справедливо.<br><br>Защита дефайнами и вставками элементарно ломается с помощью препроцессора.</font></td>
</tr>
</tbody></table>
<br> <table summary="table53" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: ksili</b> 8.12.2008, 13:16</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table54" cellspacing="0"><tbody><tr><td><b>Цитата</b>(Kallikanzarid&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;17:09&nbsp;<a href="http://forum.vingrad.ru/findpost-1720026.html" onclick="return getPost(1720026);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720026);"></a>)</td></tr><tr><td class="quote">Поди еще .NET используешь</td></tr></tbody></table></div><br>Не, чисто на С++.</font></td>
</tr>
</tbody></table>
<br> <table summary="table55" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 8.12.2008, 13:27</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table56" cellspacing="0"><tbody><tr><td><b>Цитата</b>(Kallikanzarid&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;13:09&nbsp;<a href="http://forum.vingrad.ru/findpost-1720026.html" onclick="return getPost(1720026);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720026);"></a>)</td></tr><tr><td class="quote">Защита дефайнами и вставками элементарно ломается с помощью препроцессора.&nbsp;</td></tr></tbody></table></div><br>как это? какого препроцессора? о_О</font></td>
</tr>
</tbody></table>
<br> <table summary="table57" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 8.12.2008, 13:31</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>GoldFinch</b>, Препроцессора С/С++. Прогоняешь через него файлы, и дефайны со вставками волшебным образом исчезают&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/smile.gif" src="l2client_internal_hooks_files/smile.gif" alt="smile">&nbsp;<br><br><b>ksili</b>,
как я понимаю, речь идет о смартфонах? Я имел ввиду, что экономить 10
байт может иметь смысл лишь с очень ограниченными платформами, вроде
старых мобильников.</font></td>
</tr>
</tbody></table>
<br> <table summary="table58" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: ksili</b> 8.12.2008, 13:37</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table59" cellspacing="0"><tbody><tr><td><b>Цитата</b>(Kallikanzarid&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;17:31&nbsp;<a href="http://forum.vingrad.ru/findpost-1720040.html" onclick="return getPost(1720040);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720040);"></a>)</td></tr><tr><td class="quote">ksili, как я понимаю, речь идет о смартфонах?</td></tr></tbody></table></div><br>Да, смартфоны, КПК, ... это наш клиент ))<br><br><div class="postcolor"><table class="quote" summary="table60" cellspacing="0"><tbody><tr><td><b>Цитата</b>(Kallikanzarid&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;17:31&nbsp;<a href="http://forum.vingrad.ru/findpost-1720040.html" onclick="return getPost(1720040);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720040);"></a>)</td></tr><tr><td class="quote">Препроцессора С/С++. Прогоняешь через него файлы, и дефайны со вставками волшебным образом исчезают</td></tr></tbody></table></div><br>Не понял. Ломают обычно бинарник. Как ты его прогоняешь через препроцессор?</font></td>
</tr>
</tbody></table>
<br> <table summary="table61" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 8.12.2008, 13:42</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table62" cellspacing="0"><tbody><tr><td><b>Цитата</b></td></tr><tr><td class="quote"><br>Не понял. Ломают обычно бинарник. Как ты его прогоняешь через препроцессор?&nbsp;<br></td></tr></tbody></table></div><br>Тогда я ничего не понимаю&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/smile.gif" src="l2client_internal_hooks_files/smile.gif" alt="smile">&nbsp;Может, я неправильно истолковал слово&nbsp;"дифайны"?</font></td>
</tr>
</tbody></table>
<br> <table summary="table63" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: mes</b> 8.12.2008, 13:42</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table64" cellspacing="0"><tbody><tr><td><b>Цитата</b>(ksili&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;13:37&nbsp;<a href="http://forum.vingrad.ru/findpost-1720046.html" onclick="return getPost(1720046);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720046);"></a>)</td></tr><tr><td class="quote">Ломают обычно бинарник.</td></tr></tbody></table></div><br>имелось ввиду несколько другое :<br><div class="postcolor"><table class="quote" summary="table65" cellspacing="0"><tbody><tr><td><b>Цитата</b>(dumb&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;11:40&nbsp;<a href="http://forum.vingrad.ru/findpost-1719954.html" onclick="return getPost(1719954);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1719954);"></a>)</td></tr><tr><td class="quote">так
же как и нет смысла вкрячивать в высокоуровневый код примитивную защиту
извращаясь с дефайнами и вставками - для снятия оной вовсе не
обязательно, чтобы механизм понимал любой&nbsp;"ламер"&nbsp;-
достаточно одного немного продвинутого заинтересованного человека.</td></tr></tbody></table></div><br></font></td>
</tr>
</tbody></table>
<br> <table summary="table66" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: ksili</b> 8.12.2008, 13:48</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">Не, ну вы все-таки
объясните. На С и асме пишется прога. Я так понимаю с расчётом на то,
что её будет сложно взломать, ну или просто разобраться в ее коде в
дизассемблере. Всё это предполагает то, что у злоумышленника будет
бинарник, и не будет исходников.&nbsp;<br>Что тогда такое&nbsp;"дефайн"&nbsp;в исполняемом файле?&nbsp;<br>Что исчезнет в таком файле, после его прогона через препроцессор?</font></td>
</tr>
</tbody></table>
<br> <table summary="table67" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: mes</b> 8.12.2008, 14:04</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table68" cellspacing="0"><tbody><tr><td><b>Цитата</b>(ksili&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;13:48&nbsp;<a href="http://forum.vingrad.ru/findpost-1720055.html" onclick="return getPost(1720055);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720055);"></a>)</td></tr><tr><td class="quote">Не,
ну вы все-таки объясните. На С и асме пишется прога. Я так понимаю с
расчётом на то, что её будет сложно взломать, ну или просто разобраться
в ее коде в дизассемблере.&nbsp;</td></tr></tbody></table></div><br>по
контексту речь идет о некоторых программистах,
которые&nbsp;"портят"&nbsp;(с какой целью можно только предполагать)
исходный код :&nbsp;<br><div class="postcolor"><table class="quote" summary="table69" cellspacing="0"><tbody><tr><td><b>Цитата</b></td></tr><tr><td class="quote">так же как и нет смысла вкрячивать в высокоуровневый код примитивную защиту извращаясь с дефайнами&nbsp;</td></tr></tbody></table></div><br></font></td>
</tr>
</tbody></table>
<br> <table summary="table70" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 8.12.2008, 14:10</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>Kallikanzarid</b>, речь шла от такой защите дефайнами и асм вставками<br></font><div class="postcolor"><table class="code" summary="table71" cellspacing="0"><tbody><tr><td><b>Код</b></td></tr><tr><td class="code"><script language="javascript" type="text/javascript">includeSyntax('cpp');</script><code id="cpp_I2Nzk1"><br>#define RVA(rva)&nbsp;;<br>#define IMPORT_THUNK //nothing<br><br>class ALineagePlayerController<br>{<br>public:<br>&nbsp;&nbsp;&nbsp;&nbsp;IMPORT_THUNK
void ALineagePlayerController::PlayerCalcView(class AActor *, class
FVector *, class FRotator *)&nbsp;RVA(0xF1EB)<br>};<br><br><br>__declspec(naked)&nbsp;void imp_engine()<br>//make import<br>{ __asm{<br>&nbsp;&nbsp;&nbsp;&nbsp;//_emit 0xCC<br>&nbsp;&nbsp;&nbsp;&nbsp;pop eax // =func+0x10<br>&nbsp;&nbsp;&nbsp;&nbsp;pop edx // =rva<br>&nbsp;&nbsp;&nbsp;&nbsp;add edx,[g_hEngine]&nbsp;// = VA<br>&nbsp;&nbsp;&nbsp;&nbsp;push edx<br>&nbsp;&nbsp;&nbsp;&nbsp;sub edx,eax //=org_func-(func+0x10)<br>&nbsp;&nbsp;&nbsp;&nbsp;add edx,0x10-5 //=org_func-(func+5)<br>&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;[eax-0x10+1],edx<br>&nbsp;&nbsp;&nbsp;&nbsp;ret<br>}}<br>//==================== THUNCKS ===================================<br>#define IMPORT_THUNK __declspec(naked)<br>#define RVA(rva)&nbsp;{__asm jmp&nbsp;$+5 __asm nop __asm push rva __asm call imp_engine }<br>...<br>&nbsp;&nbsp;&nbsp;&nbsp;IMPORT_THUNK
void ALineagePlayerController::PlayerCalcView(class AActor *, class
FVector *, class FRotator *)&nbsp;RVA(0xF1EB)<br></code></td></tr></tbody></table></div><script language="javascript" type="text/javascript">highlightSyntax('cpp_I2Nzk1','cpp');</script><font color="#000000" size="3" face="arial"><br>после
автоанализа в ИДА бинарник выглядит весьма неплохо, на 1й взгляд, да и
на 2й взгляд там будет немало возни с восстановлением импортов. и это
еще самый простейший вариант)</font></td>
</tr>
</tbody></table>
<br> <table summary="table72" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: mes</b> 8.12.2008, 14:23</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table73" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;14:10&nbsp;<a href="http://forum.vingrad.ru/findpost-1720078.html" onclick="return getPost(1720078);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720078);"></a>)</td></tr><tr><td class="quote">после
автоанализа в ИДА бинарник выглядит весьма неплохо, на 1й взгляд, да и
на 2й взгляд там будет немало возни с восстановлением импортов. и это
еще самый простейший вариант)&nbsp;</td></tr></tbody></table></div><br>&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/offtopic.gif" src="l2client_internal_hooks_files/offtopic.gif" alt="smile">&nbsp;а
сколько возни автору коду с подержкой всей этой ..ммм.. защитой.
)&nbsp;&nbsp;интересно в чем прелесть такой овчинки и стоит ли она
выделки ?<br>только ради (мнимой) надежды что код не взломают
?&nbsp;&nbsp;В принципе могут и не взломать.. это если как в анекдоте
про неуловимого Джо... ;)</font></td>
</tr>
</tbody></table>
<br> <table summary="table74" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: ksili</b> 8.12.2008, 14:23</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">Короче мы&nbsp;<span style="color: silver;">(<b>GoldFinch</b>,&nbsp;<b>Kallikanzarid</b>,&nbsp;<b>mes</b>&nbsp;и я)</span>&nbsp;в этой теме - лебедь, рак и щука, и ёщё кто-то четвёртый&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/offtopic.gif" src="l2client_internal_hooks_files/offtopic.gif" alt="smile">&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/dash1.gif" src="l2client_internal_hooks_files/dash1.gif" alt="smile">&nbsp;</font></td>
</tr>
</tbody></table>
<br> <table summary="table75" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 8.12.2008, 14:35</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>mes</b>, возни мало, зато куча преимуществ.<br>статический
импорт не работает, т.к. для него надо иметь заголовочные (.h) файлы
идентичные тем что были использованы при компиляции длл, иначе
возникает несоответствие таблиц методов.<br>динамические импорты через getprocaddress неудобны изза использования указателей на методы (obj-&gt;*met)() вместо obj-&gt;met()<br>а такими приятно пользоваться в коде + их можно генерить скриптом</font></td>
</tr>
</tbody></table>
<br> <table summary="table76" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: mes</b> 8.12.2008, 14:55</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table77" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;14:35&nbsp;<a href="http://forum.vingrad.ru/findpost-1720111.html" onclick="return getPost(1720111);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720111);"></a>)</td></tr><tr><td class="quote">динамические импорты через getprocaddress неудобны изза использования указателей на методы (obj-&gt;*met)() вместо obj-&gt;met()</td></tr></tbody></table></div><br>забываете о прокси-классах типа умного указателя.&nbsp;<br><br><div class="postcolor"><table class="quote" summary="table78" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;14:35&nbsp;<a href="http://forum.vingrad.ru/findpost-1720111.html" onclick="return getPost(1720111);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720111);"></a>)</td></tr><tr><td class="quote">а такими приятно пользоваться в коде + их можно генерить скриптом&nbsp;</td></tr></tbody></table></div><br>под одну платформу, определенный тип компилятора и небольшой плясочки, чтоб привести целевой бинарник к удобному виду. )</font></td>
</tr>
</tbody></table>
<br> <table summary="table79" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 8.12.2008, 16:05</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table80" cellspacing="0"><tbody><tr><td><b>Цитата</b>(mes&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;14:55&nbsp;<a href="http://forum.vingrad.ru/findpost-1720137.html" onclick="return getPost(1720137);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720137);"></a>)</td></tr><tr><td class="quote">под одну платформу, определенный тип компилятора</td></tr></tbody></table></div><br>кроссплатформенность С++ зачастую приводит к очень плохой кодогенерации.<br>лучше уж генерить хороший код под одну платформу чем *плохой* но чтоб можно было под любую.<br>когда я пишу код который будет работать внутри готового win32 приложения, мне эта кроссплатформенность *не нужна*</font></td>
</tr>
</tbody></table>
<br> <table summary="table81" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 8.12.2008, 16:25</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>GoldFinch</b>, [citation needed]</font></td>
</tr>
</tbody></table>
<br> <table summary="table82" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 8.12.2008, 16:34</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table83" cellspacing="0"><tbody><tr><td><b>Цитата</b>(Kallikanzarid&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;16:25&nbsp;<a href="http://forum.vingrad.ru/findpost-1720225.html" onclick="return getPost(1720225);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720225);"></a>)</td></tr><tr><td class="quote">GoldFinch, [citation needed]&nbsp;</td></tr></tbody></table></div><br>???</font></td>
</tr>
</tbody></table>
<br> <table summary="table84" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 8.12.2008, 16:50</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">Мне не кажется очевидным, что кроссплатформенный исходный код приводит к генерации&nbsp;"плохого"&nbsp;бинарного кода.</font></td>
</tr>
</tbody></table>
<br> <table summary="table85" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 8.12.2008, 17:15</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>Kallikanzarid</b>,
из-за&nbsp;"кроссплатформенности", в С(++) нет способа средствами языка
сгенерить некоторые x86-87 команды, например загрузку констант в
FPU.&nbsp;<br>Т.е. в некроссплатформенном паскале есть
оператор(функция) Pi который генерит fldpi, а в кроссплатформенном
С(++) оператора Pi() нет, и способа сгенерить fldpi (и другие
константы) тоже нет.<br>Впрочем код C++ для FPU местами ужасен %) Ни один нормальный программист такого бы не писал.</font></td>
</tr>
</tbody></table>
<br> <table summary="table86" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 8.12.2008, 19:33</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">Троллинг перерастает в холивар...&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile">&nbsp;<br>1) Чем плохи заранее обсчитанные константы?<br>2) Паскаль - не кроссплатформенный?&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/crazy.gif" src="l2client_internal_hooks_files/crazy.gif" alt="smile">&nbsp;Да что ви говогите!<br>3) Меня ты продавишь только цифрами, так как плевать я хотел на красоту бинарного кода&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/smile.gif" src="l2client_internal_hooks_files/smile.gif" alt="smile">&nbsp;Хочу бенчмарк, в котором те или иные мат. расчеты выполняются сначала в С++, а потом - в асме.<br>4) А ты можешь вручную оптимизировать расположение инструкций, чтобы минимизировать простой конвеера?</font></td>
</tr>
</tbody></table>
<br> <table summary="table87" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: J0ker</b> 8.12.2008, 19:35</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table88" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;17:15&nbsp;<a href="http://forum.vingrad.ru/findpost-1720266.html" onclick="return getPost(1720266);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720266);"></a>)</td></tr><tr><td class="quote">из-за&nbsp;"кроссплатформенности", в С(++) нет способа средствами языка сгенерить некоторые x86-87 команды</td></tr></tbody></table></div><br>бред<br>никакой связи тут нет<br>вопрос лишь в поддержке компилятора<br><br><div class="postcolor"><table class="quote" summary="table89" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;17:15&nbsp;<a href="http://forum.vingrad.ru/findpost-1720266.html" onclick="return getPost(1720266);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720266);"></a>)</td></tr><tr><td class="quote">Впрочем код C++ для FPU местами ужасен</td></tr></tbody></table></div><br>не существует&nbsp;"кода C++ для FPU"<br>качество кода, сгенерированного компилятором зависит от качества компилятора<br>оценка
качества оптимизированного кода неподготовленными субъектами обычно
неадекватна, т.к. понять что оптимально а что нет на уже 2-х
процессорных платформах способен только специалист<br><br>и вообще на 2-х последних страницах столько бреда, что ужасть&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile">&nbsp;</font></td>
</tr>
</tbody></table>
<br> <table summary="table90" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 8.12.2008, 20:05</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>Kallikanzarid</b>,<br>1) тем что аппаратные константы много лучше программных<br>2) паскаль - я имел ввиду турбопаскаль, дельфи<br>3) цифры:&nbsp;<br>&nbsp;&nbsp;&nbsp;fldpi - 2байта<br>&nbsp;&nbsp;&nbsp;pi dt 3.14.... / fld [pi] - 10+6 байт<br>4) если бы ты видел код который те генерит твой компилятор, ты бы не говорил о&nbsp;"минимизации простоя конвеера"<br>какбэ вот такой код при конфигурации&nbsp;"релиз"&nbsp;- это реальность<br>.text:1000122F&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eax,
dword ptr [g_hEngine]<br>.text:10001234&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword
ptr [eax+56F5D8h], offset
Hook_ALineagePlayerController_PlayerCalcView(AActor *,FVector
*,FRotator *)<br>.text:1000123E&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ecx,
dword ptr [g_hEngine]<br>.text:10001244&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword
ptr [ecx+57B968h], offset loc_10001190<br>.text:1000124E&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;edx,
dword ptr [g_hEngine]<br><br><br><b>J0ker</b>, ок, будет говорить исключительно о компиляторе MSVC. так вот у него кодогенератор - гуан*<br><br>насчет кода для FPU - вот так вот в MSVC передаются 32-разрядные значения float<br>.text:10001344&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[esp+18h+arg_4]<br>.text:10001348&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fstp&nbsp;&nbsp;&nbsp;&nbsp;[esp+18h+var_14]<br>.text:1000134C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword
ptr [eax+4]<br>.text:1000134F&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fstp&nbsp;&nbsp;&nbsp;&nbsp;[esp+18h+var_18]<br>.text:10001352&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;&nbsp;&nbsp;&nbsp;FCanvasUtil::DrawLine(float,float,float,float,FColor,int)<br>видимо те кто писали кодогенератор малость не учли, что dword'ы в стек можно запихивать командой push, а не через стек FPU %)<br></font></td>
</tr>
</tbody></table>
<br> <table summary="table91" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 8.12.2008, 20:15</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>GoldFinch</b>,
объясняю еще раз для самых одаренных. Мне. Плевать. На. Красоту.
Ассемблерного. Кода. Если бахвалишься своей труъ-ассемблерностью,
подтверди свое превосходство, представив реализацию какого-нибудь
численного алгоритма на С++ и на асме. И время, за которое эти
реализации выполняются.</font></td>
</tr>
</tbody></table>
<br> <table summary="table92" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 8.12.2008, 20:24</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>Kallikanzarid</b>,
вот тебе какбэ алгоритм получения 80-разрядной константы Pi, разница в
размере - в 8 раз, разница в быстродействии в единицы - десятки раз, в
зависимости от расположения константы в кеше или нет.<br>Не нравится -
выбери другой алгоритм, метод, условия измерения и представь свой труъ
С++ код, ато я на С++ меньше месяца пишу, могу true с false через
strlen() сравнивать.</font></td>
</tr>
</tbody></table>
<br> <table summary="table93" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: J0ker</b> 8.12.2008, 20:42</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table94" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;20:05&nbsp;<a href="http://forum.vingrad.ru/findpost-1720387.html" onclick="return getPost(1720387);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720387);"></a>)</td></tr><tr><td class="quote">0ker, ок, будет говорить исключительно о компиляторе MSVC. так вот у него кодогенератор - гуан*<br><br>насчет кода для FPU - вот так вот в MSVC передаются 32-разрядные значения float<br>.text:10001344&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[esp+18h+arg_4]<br>.text:10001348&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fstp&nbsp;&nbsp;&nbsp;&nbsp;[esp+18h+var_14]<br>.text:1000134C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword
ptr [eax+4]<br>.text:1000134F&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fstp&nbsp;&nbsp;&nbsp;&nbsp;[esp+18h+var_18]<br>.text:10001352&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;&nbsp;&nbsp;&nbsp;FCanvasUtil::DrawLine(float,float,float,float,FColor,int)<br>видимо те кто писали кодогенератор малость не учли, что dword'ы в стек можно запихивать командой push, а не через стек FPU %)</td></tr></tbody></table></div><br>видимо
тот, кто критикует то, что не понимает, не знает того, что
преобразование типов в плавающую точку является реальной операцией, а
не кастом на уровне переназвания типа</font></td>
</tr>
</tbody></table>
<br> <table summary="table95" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 8.12.2008, 20:46</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>J0ker</b>, и где же ты там преобразование увидел? я тольк увидел преобразование m32real-&gt;m80real-&gt;m32real. там какбэ fld а не fild</font></td>
</tr>
</tbody></table>
<br> <table summary="table96" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: J0ker</b> 8.12.2008, 20:50</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table97" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;8.12.2008,&nbsp;&nbsp;20:46)</td></tr><tr><td class="quote"><b>J0ker</b>, и где же ты там преобразование увидел? я тольк увидел преобразование 32разряда-&gt;80рязрядов-&gt;32разряда</td></tr></tbody></table></div><br>именно<br>в
функции операнды передаются через стек, и при передаче тип должен быть
проверен и если он не может быть преобразован то в точке передачи
обязан быть выставлен флаг исключения<br>если данную функцию переписать как инлайн, то все будет оптимизированно на стеке FPU<br>других решений тут нет и быть не может</font></td>
</tr>
</tbody></table>
<br> <table summary="table98" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 8.12.2008, 20:56</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table99" cellspacing="0"><tbody><tr><td><b>Цитата</b>(J0ker&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;20:50&nbsp;<a href="http://forum.vingrad.ru/findpost-1720430.html" onclick="return getPost(1720430);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720430);"></a>)</td></tr><tr><td class="quote">других решений тут нет и быть не может&nbsp;</td></tr></tbody></table></div><br>а это не решение? о_О<br>pushd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[esp+18h+arg_4]<br>pushd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[eax+4]<br>call&nbsp;&nbsp;&nbsp;&nbsp;FCanvasUtil::DrawLine(float,float,float,float,FColor,int)</font></td>
</tr>
</tbody></table>
<br> <table summary="table100" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: mes</b> 8.12.2008, 21:08</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table101" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;20:56&nbsp;<a href="http://forum.vingrad.ru/findpost-1720433.html" onclick="return getPost(1720433);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720433);"></a>)</td></tr><tr><td class="quote"><br>а это не решение? о_О<br>pushd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[esp+18h+arg_4]<br>pushd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[eax+4]</td></tr></tbody></table></div><br><br>битовое
представление floata равного n не&nbsp;&nbsp;не соответствует битовому
представлению этого числа в dword/int (дополненого нулями)</font></td>
</tr>
</tbody></table>
<br> <table summary="table102" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: J0ker</b> 8.12.2008, 21:20</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table103" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;8.12.2008,&nbsp;&nbsp;20:56)</td></tr><tr><td class="quote"><div class="postcolor"><table class="quote" summary="table104" cellspacing="0"><tbody><tr><td><b>Цитата</b>(J0ker&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;20:50&nbsp;<a href="http://forum.vingrad.ru/findpost-1720430.html" onclick="return getPost(1720430);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720430);"></a>)</td></tr><tr><td class="quote">других решений тут нет и быть не может&nbsp;</td></tr></tbody></table></div><br>а это не решение? о_О<br>pushd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[esp+18h+arg_4]<br>pushd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[eax+4]<br>call&nbsp;&nbsp;&nbsp;&nbsp;FCanvasUtil::DrawLine(float,float,float,float,FColor,int)</td></tr></tbody></table></div><br>нет</font></td>
</tr>
</tbody></table>
<br> <table summary="table105" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 8.12.2008, 21:21</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>mes</b>, я струдом догадываюсь что такое битовое представление, тем более дополненное нулями О_о, и причем тут это<br>команда&nbsp;<i>push [mem32]</i>&nbsp;копирует 4 байта по адресу mem32 в стек, и она не обращает внимания на&nbsp;"битовое представление"&nbsp;этих байт.<br><b>J0ker</b>, и в каком же месте это не решение?</font></td>
</tr>
</tbody></table>
<br> <table summary="table106" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: J0ker</b> 8.12.2008, 21:29</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table107" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;21:21&nbsp;<a href="http://forum.vingrad.ru/findpost-1720456.html" onclick="return getPost(1720456);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720456);"></a>)</td></tr><tr><td class="quote">J0ker, и в каком же месте это не решение?</td></tr></tbody></table></div><br>в
месте преобразования типа - размещение значений с плавающей точкой в
памяти и обратная операция сопряжено с преобразованием типов<br>нельзя корректно положить на стек число с плавающей точкой иначе чем через стек FPU</font></td>
</tr>
</tbody></table>
<br> <table summary="table108" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: mes</b> 8.12.2008, 21:30</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"></font><div class="postcolor"><table class="quote" summary="table109" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;21:21&nbsp;<a href="http://forum.vingrad.ru/findpost-1720456.html" onclick="return getPost(1720456);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720456);"></a>)</td></tr><tr><td class="quote">mes, я струдом догадываюсь что такое битовое представление,</td></tr></tbody></table></div><font color="#000000" size="3" face="arial"><br>сейчас набросаю пример почему не явлется решением :<br><br></font><div class="postcolor"><table class="quote" summary="table110" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;21:21&nbsp;<a href="http://forum.vingrad.ru/findpost-1720456.html" onclick="return getPost(1720456);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720456);"></a>)</td></tr><tr><td class="quote">копирует 4 байта по адресу mem32 в стек, и она&nbsp;<b>не обращает внимания на&nbsp;"битовое представление"&nbsp;</b>этих байт.</td></tr></tbody></table></div><font color="#000000" size="3" face="arial"><br><br><b>Добавлено @ 21:33</b><br>вот примерно что получится в результате вашго решения :<br></font><div class="postcolor"><table class="code" summary="table111" cellspacing="0"><tbody><tr><td><b>Код</b></td></tr><tr><td class="code"><script language="javascript" type="text/javascript">includeSyntax('cpp');</script><code id="cpp_Dc1NDh"><br>#include&nbsp;&lt;iostream&gt;<br><br>union convert<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;float f;<br>&nbsp;&nbsp;&nbsp;&nbsp;int i;<br>};<br><br>int main()<br>{<br>&nbsp;&nbsp;&nbsp;convert c;<br>&nbsp;&nbsp;&nbsp;c.i =5;<br>&nbsp;&nbsp;&nbsp;std::cout&lt;&lt;c.i&lt;&lt;std::endl;<br>&nbsp;&nbsp;&nbsp;++c.f;<br>&nbsp;&nbsp;&nbsp;std::cout&lt;&lt;c.i&lt;&lt;std::endl;<br><br>&nbsp;&nbsp;system("pause");<br>&nbsp;&nbsp;return 0;<br>}<br><br></code></td></tr></tbody></table></div><script language="javascript" type="text/javascript">highlightSyntax('cpp_Dc1NDh','cpp');</script><font color="#000000" size="3" face="arial"></font></td>
</tr>
</tbody></table>
<br> <table summary="table112" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 8.12.2008, 21:39</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>J0ker</b>,&nbsp;<b>mes</b>, жжоте... какие громкие заявления) какая уверенность в правоте своих слов... вы не правы.&nbsp;<br>Потому
что черное это черное, а белое это белое. Есть много способов премещать
значения в памяти, и если вы этого не знаете это не значит что эти
способы неверны) Курите документацию к процу и вам откроется истина)<br><br>Но
какие замечательные высказывания от вроде бы малость разбирающихся в
программировании людей... Записал бы, да бред не коллекционирую.<br><br>upd:<br><b>mes</b>, нет, Ваш код ниразу не соответствует той ситуации.</font></td>
</tr>
</tbody></table>
<br> <table summary="table113" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: mes</b> 8.12.2008, 21:49</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table114" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;21:39&nbsp;<a href="http://forum.vingrad.ru/findpost-1720473.html" onclick="return getPost(1720473);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720473);"></a>)</td></tr><tr><td class="quote">какие громкие заявления)</td></tr></tbody></table></div><br>никакой
громкости.. Вам был представлен пример, который показывает что участок
памяти трактованный как int, числено не равен этому же участку памяти
но трактованному как float.<br>жаль что Вы даже не захотели этого понять ;)<br><br><div class="postcolor"><table class="quote" summary="table115" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;21:39&nbsp;<a href="http://forum.vingrad.ru/findpost-1720473.html" onclick="return getPost(1720473);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720473);"></a>)</td></tr><tr><td class="quote">Потому что черное это черное, а белое это белое.</td></tr></tbody></table></div><br>И ночью тоже ?<br><br><div class="postcolor"><table class="quote" summary="table116" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;21:39&nbsp;<a href="http://forum.vingrad.ru/findpost-1720473.html" onclick="return getPost(1720473);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720473);"></a>)</td></tr><tr><td class="quote">Есть много способов премещать значения в памяти, и если вы этого не знаете это не значит что эти способы неверны)&nbsp;</td></tr></tbody></table></div><br>а кто нибудь оспаривал ? речь не о перемещении а о трактовке значения.<br><br><div class="postcolor"><table class="quote" summary="table117" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;21:39&nbsp;<a href="http://forum.vingrad.ru/findpost-1720473.html" onclick="return getPost(1720473);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720473);"></a>)</td></tr><tr><td class="quote">Записал бы, да бред не коллекционирую.&nbsp;</td></tr></tbody></table></div><br>А вот это действительно громко. Записал бы, но .... я думаю Вы догадались )<br><br><br></font></td>
</tr>
</tbody></table>
<br> <table summary="table118" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: J0ker</b> 8.12.2008, 21:56</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">так..... тут было потерто обкидывание оппонента какашками&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile">&nbsp;</font></td>
</tr>
</tbody></table>
<br> <table summary="table119" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: mes</b> 8.12.2008, 22:12</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"></font><div class="postcolor"><table class="quote" summary="table120" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;21:39&nbsp;<a href="http://forum.vingrad.ru/findpost-1720473.html" onclick="return getPost(1720473);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720473);"></a>)</td></tr><tr><td class="quote">mes, нет, Ваш код ниразу не соответствует той ситуации.</td></tr></tbody></table></div><font color="#000000" size="3" face="arial"><br><br></font><div class="postcolor"><table class="quote" summary="table121" cellspacing="0"><tbody><tr><td><b>Цитата</b>(J0ker&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;21:20&nbsp;<a href="http://forum.vingrad.ru/findpost-1720454.html" onclick="return getPost(1720454);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720454);"></a>)</td></tr><tr><td class="quote">pushd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[esp+18h+arg_4]<br>pushd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[eax+4]<br>call&nbsp;&nbsp;&nbsp;&nbsp;FCanvasUtil::DrawLine(float,float,float,float,FColor,int)</td></tr></tbody></table></div><font color="#000000" size="3" face="arial"><br>вот немного изменил код, чтоб легче было понимать что происходит .. желаю приятных эксперементов :<br></font><div class="postcolor"><table class="code" summary="table122" cellspacing="0"><tbody><tr><td><b>Код</b></td></tr><tr><td class="code"><script language="javascript" type="text/javascript">includeSyntax('cpp');</script><code id="cpp_DdmZjY"><br><br>#include&nbsp;&lt;iostream&gt;<br><br>union convert<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;float f;<br>&nbsp;&nbsp;&nbsp;&nbsp;int i;<br>};<br><br>float mycast_int2float(int i)&nbsp;// преобразование без учета типа<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;convert c;<br>&nbsp;&nbsp;&nbsp;&nbsp;c.i = i;<br>&nbsp;&nbsp;&nbsp;&nbsp;return c.f;<br>}<br><br>void myfunc&nbsp;(float f)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;std::cout&lt;&lt;&nbsp;"argument for myfunc =&nbsp;"&nbsp;&lt;&lt;&nbsp;f&nbsp;&lt;&lt;&nbsp;std::endl;<br>}<br><br>int main()<br>{<br>// передача аргумента с&nbsp;&nbsp;конвертацией типа<br>&nbsp;&nbsp;myfunc&nbsp;('a');&nbsp;// char<br>&nbsp;&nbsp;myfunc&nbsp;(int(5));&nbsp;// int<br>&nbsp;&nbsp;myfunc&nbsp;(6);&nbsp;&nbsp;&nbsp;&nbsp;// int<br>&nbsp;&nbsp;myfunc&nbsp;(7.0);&nbsp;// double<br>// передача аргумента по битовому представлению<br>&nbsp;&nbsp;myfunc&nbsp;(mycast_int2float('a'));<br>&nbsp;&nbsp;myfunc&nbsp;(mycast_int2float(5));<br><br>&nbsp;&nbsp;system("pause");<br>&nbsp;&nbsp;return 0;<br>}<br><br></code></td></tr></tbody></table></div><script language="javascript" type="text/javascript">highlightSyntax('cpp_DdmZjY','cpp');</script><font color="#000000" size="3" face="arial"></font></td>
</tr>
</tbody></table>
<br> <table summary="table123" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 8.12.2008, 22:17</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>mes</b>, что за бредовый пруфкод вы пишете? то что мы обсуждаем выглядит так:<br></font><div class="postcolor"><table class="code" summary="table124" cellspacing="0"><tbody><tr><td><b>Код</b></td></tr><tr><td class="code"><script language="javascript" type="text/javascript">includeSyntax('cpp');</script><code id="cpp_ZGQzYT"><br>#include&nbsp;&lt;windows.h&gt;<br>#pragma comment(linker,"/ENTRY:main")<br><br>int __stdcall Foo(float arg)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;return arg == 8/7;<br>};<br><br>int Bar(float arg)<br>{__asm{<br>&nbsp;&nbsp;&nbsp;&nbsp;push dword ptr&nbsp;[arg]<br>&nbsp;&nbsp;&nbsp;&nbsp;call Foo<br>}};<br><br>void main()<br>{&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;Bar(8/7))&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageBoxA(0,"8//7==8//7","ok",0);<br>&nbsp;&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageBoxA(0,"8//7!=8//7",0,0);<br>}<br></code></td></tr></tbody></table></div><script language="javascript" type="text/javascript">highlightSyntax('cpp_ZGQzYT','cpp');</script><font color="#000000" size="3" face="arial"><br>в строчке&nbsp;"push dword ptr [arg]"&nbsp;float значение передается в стек через push а не через пару fld/fstp<br>что характерно прога выводит&nbsp;"8/7==8/7"</font></td>
</tr>
</tbody></table>
<br> <table summary="table125" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: J0ker</b> 8.12.2008, 22:25</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>GoldFinch</b>, я вам объясняю... совершенно спокойно, вот...<br>преобразование из дабл во флоат - это ОПЕРАЦИЯ - она не может быть выполнена без привлечения FPU либо его эмулятора<br>если вы в своих примерах замените float на double вы сразу это поймете</font></td>
</tr>
</tbody></table>
<br> <table summary="table126" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: mes</b> 8.12.2008, 22:28</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"></font><div class="postcolor"><table class="quote" summary="table127" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;22:17&nbsp;<a href="http://forum.vingrad.ru/findpost-1720508.html" onclick="return getPost(1720508);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720508);"></a>)</td></tr><tr><td class="quote">int Bar(float arg)</td></tr></tbody></table></div><font color="#000000" size="3" face="arial"><br>A Вы схитрили .. перепешите код изменив эту срочку на<br>int Bar(int arg)<br><br>вот Вам каркас теста :<br></font><div class="postcolor"><table class="code" summary="table128" cellspacing="0"><tbody><tr><td><b>Код</b></td></tr><tr><td class="code"><script language="javascript" type="text/javascript">includeSyntax('cpp');</script><code id="cpp_DU5NWV"><br><br>#include&nbsp;&lt;iostream&gt;<br><br>int __stdcall Foo(float arg)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;return int(arg)+1;<br>};<br>int Bar(&nbsp;int arg)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;Foo&nbsp;(arg);&nbsp;// вот вместо этого&nbsp;&nbsp;передайте параметр через стек&nbsp;&nbsp;)<br>};<br>int main()<br>{<br>&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"Foo(5)&nbsp;=&nbsp;"&nbsp;&lt;&lt;&nbsp;Bar(5)&lt;&lt;std::endl;<br><br>&nbsp;&nbsp;system("pause");<br>&nbsp;&nbsp;return 0;<br>}<br></code></td></tr></tbody></table></div><script language="javascript" type="text/javascript">highlightSyntax('cpp_DU5NWV','cpp');</script><font color="#000000" size="3" face="arial"><br><br>потом еше можете изменить int на double и посмотреть результат )&nbsp;</font></td>
</tr>
</tbody></table>
<br> <table summary="table129" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: J0ker</b> 8.12.2008, 22:39</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>GoldFinch</b>, вот, разберитесь уже наконец<br></font><div class="postcolor"><table class="code" summary="table130" cellspacing="0"><tbody><tr><td><b>Код</b></td></tr><tr><td class="code"><script language="javascript" type="text/javascript">includeSyntax('cpp');</script><code id="cpp_GJjNWQ"><br>__declspec(noinline)&nbsp;float foo(float x, float x1)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;return x * x1;<br>00401650&nbsp;&nbsp;fld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword ptr&nbsp;[esp+4]&nbsp;<br>00401654&nbsp;&nbsp;fmul&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword ptr&nbsp;[esp+8]&nbsp;<br>00401658&nbsp;&nbsp;fstp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword ptr&nbsp;[esp+4]&nbsp;<br>0040165C&nbsp;&nbsp;fld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword ptr&nbsp;[esp+4]&nbsp;<br>}<br>00401660&nbsp;&nbsp;ret&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><br>..............<br><br>__declspec(noinline)&nbsp;double foo1(double x, double x1)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;return x * x1;<br>00401670&nbsp;&nbsp;fld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qword ptr&nbsp;[esp+4]&nbsp;<br>00401674&nbsp;&nbsp;fmul&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qword ptr&nbsp;[esp+0Ch]&nbsp;<br>}<br>00401678&nbsp;&nbsp;ret&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><br>..................<br><br>int _tmain(int argc, _TCHAR* argv[])<br>{<br>00401680&nbsp;&nbsp;push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ebp&nbsp;&nbsp;<br>00401681&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ebp,esp&nbsp;<br>00401683&nbsp;&nbsp;and&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;esp,0FFFFFFC0h&nbsp;<br>00401686&nbsp;&nbsp;push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0FFFFFFFFh&nbsp;<br>00401688&nbsp;&nbsp;push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;403A20h&nbsp;<br>0040168D&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eax,dword ptr fs:[00000000h]&nbsp;<br>00401693&nbsp;&nbsp;push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eax&nbsp;&nbsp;<br>00401694&nbsp;&nbsp;sub&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;esp,70h&nbsp;<br>00401697&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eax,dword ptr ds:[00406018h]&nbsp;<br>0040169C&nbsp;&nbsp;xor&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eax,esp&nbsp;<br>0040169E&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword ptr&nbsp;[esp+38h],eax&nbsp;<br>004016A2&nbsp;&nbsp;push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;esi&nbsp;&nbsp;<br>004016A3&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eax,dword ptr ds:[00406018h]&nbsp;<br>004016A8&nbsp;&nbsp;xor&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eax,esp&nbsp;<br>004016AA&nbsp;&nbsp;push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eax&nbsp;&nbsp;<br>004016AB&nbsp;&nbsp;lea&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eax,[esp+78h]&nbsp;<br>004016AF&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword ptr fs:[00000000h],eax&nbsp;<br>004016B5&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;esi,dword ptr&nbsp;[ebp+0Ch]&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;float a =&nbsp;(float)atof(argv[1]);<br>004016B8&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eax,dword ptr&nbsp;[esi+4]&nbsp;<br>004016BB&nbsp;&nbsp;push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eax&nbsp;&nbsp;<br>004016BC&nbsp;&nbsp;call&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword ptr ds:[00404108h]&nbsp;<br>004016C2&nbsp;&nbsp;fstp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword ptr&nbsp;[esp+34h]&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;float b =&nbsp;(float)atof(argv[2]);<br>004016C6&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ecx,dword ptr&nbsp;[esi+8]&nbsp;<br>004016C9&nbsp;&nbsp;add&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;esp,4&nbsp;<br>004016CC&nbsp;&nbsp;push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ecx&nbsp;&nbsp;<br>004016CD&nbsp;&nbsp;call&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword ptr ds:[00404108h]&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;float y = foo(a, b)&nbsp;* 4.7f;<br>004016D3&nbsp;&nbsp;fstp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword ptr&nbsp;[esp+38h]&nbsp;<br>004016D7&nbsp;&nbsp;fld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword ptr&nbsp;[esp+38h]&nbsp;<br>004016DB&nbsp;&nbsp;fstp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword ptr&nbsp;[esp]&nbsp;<br>004016DE&nbsp;&nbsp;push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ecx&nbsp;&nbsp;<br>004016DF&nbsp;&nbsp;fld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword ptr&nbsp;[esp+38h]&nbsp;<br>004016E3&nbsp;&nbsp;fstp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword ptr&nbsp;[esp]&nbsp;<br>004016E6&nbsp;&nbsp;call&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;00401650&nbsp;<br>004016EB&nbsp;&nbsp;fmul&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qword ptr ds:[00404650h]&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;double a1 = atof(argv[1]);<br>004016F1&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;edx,dword ptr&nbsp;[esi+4]&nbsp;<br>004016F4&nbsp;&nbsp;push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;edx&nbsp;&nbsp;<br>004016F5&nbsp;&nbsp;fstp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword ptr&nbsp;[esp+3Ch]&nbsp;<br>004016F9&nbsp;&nbsp;call&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword ptr ds:[00404108h]&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;double b1 = atof(argv[2]);<br>004016FF&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eax,dword ptr&nbsp;[esi+8]&nbsp;<br>00401702&nbsp;&nbsp;fstp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qword ptr&nbsp;[esp+40h]&nbsp;<br>00401706&nbsp;&nbsp;add&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;esp,0Ch&nbsp;<br>00401709&nbsp;&nbsp;push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eax&nbsp;&nbsp;<br>0040170A&nbsp;&nbsp;call&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword ptr ds:[00404108h]&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;double y1 = foo1(a1, b1)&nbsp;* 4.7;<br>00401710&nbsp;&nbsp;sub&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;esp,0Ch&nbsp;<br>00401713&nbsp;&nbsp;fstp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qword ptr&nbsp;[esp+8]&nbsp;<br>00401717&nbsp;&nbsp;fld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qword ptr&nbsp;[esp+44h]&nbsp;<br>0040171B&nbsp;&nbsp;fstp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qword ptr&nbsp;[esp]&nbsp;<br>0040171E&nbsp;&nbsp;call&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;00401670&nbsp;<br>00401723&nbsp;&nbsp;fmul&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qword ptr ds:[00404648h]&nbsp;<br>00401729&nbsp;&nbsp;add&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;esp,10h&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(int)(y + y1);<br>0040172C&nbsp;&nbsp;fadd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword ptr&nbsp;[esp+30h]&nbsp;<br>00401730&nbsp;&nbsp;call&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;00403500&nbsp;<br>}<br>00401735&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ecx,dword ptr&nbsp;[esp+78h]&nbsp;<br>00401739&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword ptr fs:[00000000h],ecx&nbsp;<br>00401740&nbsp;&nbsp;pop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ecx&nbsp;&nbsp;<br>00401741&nbsp;&nbsp;pop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;esi&nbsp;&nbsp;<br>00401742&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ecx,dword ptr&nbsp;[esp+38h]&nbsp;<br>00401746&nbsp;&nbsp;xor&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ecx,esp&nbsp;<br>00401748&nbsp;&nbsp;call&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;00401F58&nbsp;<br>0040174D&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;esp,ebp&nbsp;<br>0040174F&nbsp;&nbsp;pop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ebp&nbsp;&nbsp;<br>00401750&nbsp;&nbsp;ret&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></code></td></tr></tbody></table></div><script language="javascript" type="text/javascript">highlightSyntax('cpp_GJjNWQ','cpp');</script><font color="#000000" size="3" face="arial"></font></td>
</tr>
</tbody></table>
<br> <table summary="table131" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 8.12.2008, 22:39</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>J0ker</b>,&nbsp;<br></font><div class="postcolor"><table class="code" summary="table132" cellspacing="0"><tbody><tr><td><b>Код</b></td></tr><tr><td class="code"><script language="javascript" type="text/javascript">includeSyntax('cpp');</script><code id="cpp_zNjQyM"><br>.text:10001344&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[esp+18h+arg_4]<br>.text:10001348&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fstp&nbsp;&nbsp;&nbsp;&nbsp;[esp+18h+var_14]<br>.text:1000134C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword
ptr&nbsp;[eax+4]<br>.text:1000134F&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fstp&nbsp;&nbsp;&nbsp;&nbsp;[esp+18h+var_18]<br>.text:10001352&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;&nbsp;&nbsp;&nbsp;FCanvasUtil::DrawLine(float,float,float,float,FColor,int)<br></code></td></tr></tbody></table></div><script language="javascript" type="text/javascript">highlightSyntax('cpp_zNjQyM','cpp');</script><font color="#000000" size="3" face="arial"><br>где
Вы тут увидели double??? тот самый 64-разрядный double, а не
32-разрядный float?? надеюсь Вы понимаете что мы говорим о
32(тридцатидвух)-разрядных значениях??<br><br>но специально для Вас, я перепишу код для double, и даже уберу там баги которых Вы не заметили)))<br></font><div class="postcolor"><table class="code" summary="table133" cellspacing="0"><tbody><tr><td><b>Код</b></td></tr><tr><td class="code"><script language="javascript" type="text/javascript">includeSyntax('cpp');</script><code id="cpp_xN2ViZ"><br>#include&nbsp;&lt;windows.h&gt;<br>#pragma comment(linker,"/ENTRY:main")<br><br>__declspec(noinline)&nbsp;int __stdcall Foo(double arg)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;return arg == 8.0/7.0;<br>};<br>&nbsp;<br>__declspec(noinline)&nbsp;int __stdcall Bar(double arg)<br>{__asm{<br>&nbsp;&nbsp;&nbsp;&nbsp;push dword ptr&nbsp;[arg+4]<br>&nbsp;&nbsp;&nbsp;&nbsp;push dword ptr&nbsp;[arg]<br>&nbsp;&nbsp;&nbsp;&nbsp;call Foo<br>}};<br><br>void main()<br>{&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;Bar(8.0/7.0))&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageBoxA(0,"8/7==8/7","ok",0);<br>&nbsp;&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageBoxA(0,"8/7!=8/7",0,0);<br>}<br></code></td></tr></tbody></table></div><script language="javascript" type="text/javascript">highlightSyntax('cpp_xN2ViZ','cpp');</script><font color="#000000" size="3" face="arial"><br>какбэ 64-разрядные значения запихиваются в стек двумя push [mem32]<br><br>более того, пиши я под x64, там был бы один push [mem64]<br><br><b>Добавлено @ 22:44</b><br><b>J0ker</b>, Вас в вашем коде строчки<br>00401658&nbsp;&nbsp;fstp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword ptr [esp+4]&nbsp;<br>0040165C&nbsp;&nbsp;fld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword ptr [esp+4]&nbsp;<br>не смущают?<br>и вообще, как эта муть относится к теме?<br><br><br><b>mes</b>, медленно, вдумчиво, прочитайте еще раз этот код, и Вы поймете что Вы пишите не по теме.<br>.text:10001344&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[esp+18h+arg_4]<br>.text:10001348&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fstp&nbsp;&nbsp;&nbsp;&nbsp;[esp+18h+var_14]<br>.text:1000134C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword
ptr [eax+4]<br>.text:1000134F&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fstp&nbsp;&nbsp;&nbsp;&nbsp;[esp+18h+var_18]<br>.text:10001352&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;&nbsp;&nbsp;&nbsp;FCanvasUtil::DrawLine(float,float,float,float,FColor,int)<br>ну нету в этом коде ничего связанного с int, не-ту</font></td>
</tr>
</tbody></table>
<br> <table summary="table134" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: J0ker</b> 8.12.2008, 23:04</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"></font><div class="postcolor"><table class="quote" summary="table135" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;22:39&nbsp;<a href="http://forum.vingrad.ru/findpost-1720531.html" onclick="return getPost(1720531);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720531);"></a>)</td></tr><tr><td class="quote">о специально для Вас, я перепишу код для double, и даже уберу там баги которых Вы не заметили)))</td></tr></tbody></table></div><font color="#000000" size="3" face="arial"><br>да я собстна не про этот код&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile">&nbsp;<br>я его даже не читал<br><br></font><div class="postcolor"><table class="quote" summary="table136" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;22:39&nbsp;<a href="http://forum.vingrad.ru/findpost-1720531.html" onclick="return getPost(1720531);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720531);"></a>)</td></tr><tr><td class="quote">J0ker, Вас в вашем коде строчки<br>00401658&nbsp;&nbsp;fstp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword ptr [esp+4]&nbsp;<br>0040165C&nbsp;&nbsp;fld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword ptr [esp+4]&nbsp;<br>не смущают?</td></tr></tbody></table></div><font color="#000000" size="3" face="arial"><br>а вас смущает? а что вас смущает?&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile">&nbsp;<br><br></font><div class="postcolor"><table class="quote" summary="table137" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;22:39&nbsp;<a href="http://forum.vingrad.ru/findpost-1720531.html" onclick="return getPost(1720531);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720531);"></a>)</td></tr><tr><td class="quote">и вообще, как эта муть относится к теме?</td></tr></tbody></table></div><font color="#000000" size="3" face="arial"><br>когда вы это поймете, дискуссия будет окончена&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile">&nbsp;</font></td>
</tr>
</tbody></table>
<br> <table summary="table138" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 8.12.2008, 23:09</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>J0ker</b>, эти
строчки - nop. они ничего не делают. И таких строчек в том коде много.
Вы вообще смотрели тот код который выложили? Да там оптимизацией и не
пахнет.<br><br><b>Добавлено через 6 минут</b><br>По оптимизации - вот это вот<br>004016DE&nbsp;&nbsp;push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ecx&nbsp;&nbsp;<br>004016DF&nbsp;&nbsp;fld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword ptr [esp+38h]&nbsp;<br>004016E3&nbsp;&nbsp;fstp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword ptr [esp]&nbsp;<br>004016E6&nbsp;&nbsp;call&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;00401650&nbsp;<br>заменяется на<br>push dword ptr [esp+38h]&nbsp;&nbsp;<br>call 00401650<br>и т.д. и т.п.<br><br>не верите? проверьте в ольке&nbsp;<br></font></td>
</tr>
</tbody></table>
<br> <table summary="table139" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: J0ker</b> 8.12.2008, 23:23</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"></font><div class="postcolor"><table class="quote" summary="table140" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;23:09&nbsp;<a href="http://forum.vingrad.ru/findpost-1720550.html" onclick="return getPost(1720550);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720550);"></a>)</td></tr><tr><td class="quote">J0ker, эти строчки - nop. они ничего не делают.</td></tr></tbody></table></div><font color="#000000" size="3" face="arial"><br>да неужели?<br>а давайте проверим - вот конкретно эти строчки<br></font><div class="postcolor"><table class="code" summary="table141" cellspacing="0"><tbody><tr><td><b>Код</b></td></tr><tr><td class="code"><script language="javascript" type="text/javascript">includeSyntax('cpp');</script><code id="cpp_wYjBmY"><br>// здесь ST0 = +7.5899997329711936e+0000<br>00401658&nbsp;&nbsp;fstp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword ptr&nbsp;[esp+4]&nbsp;<br>0040165C&nbsp;&nbsp;fld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword ptr&nbsp;[esp+4]<br>// а здесь ST0 = +7.5899996757507324e+0000<br></code></td></tr></tbody></table></div><script language="javascript" type="text/javascript">highlightSyntax('cpp_wYjBmY','cpp');</script><font color="#000000" size="3" face="arial"><br>вы мысль улавливаете, да?&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile"><br><br><b>Добавлено через 1 минуту и 32 секунды</b><br></font><div class="postcolor"><table class="quote" summary="table142" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;23:09&nbsp;<a href="http://forum.vingrad.ru/findpost-1720550.html" onclick="return getPost(1720550);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720550);"></a>)</td></tr><tr><td class="quote">По оптимизации - вот это вот<br>004016DE&nbsp;&nbsp;push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ecx&nbsp;&nbsp;<br>004016DF&nbsp;&nbsp;fld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword ptr [esp+38h]&nbsp;<br>004016E3&nbsp;&nbsp;fstp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword ptr [esp]&nbsp;<br>004016E6&nbsp;&nbsp;call&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;00401650&nbsp;<br>заменяется на<br>push dword ptr [esp+38h]&nbsp;&nbsp;<br>call 00401650<br>и т.д. и т.п.<br><br>не верите? проверьте в ольке&nbsp;</td></tr></tbody></table></div><font color="#000000" size="3" face="arial"><br>только если нет преобразования типов<br>ага&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile">&nbsp;</font></td>
</tr>
</tbody></table>
<br> <table summary="table143" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 8.12.2008, 23:30</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>J0ker</b>, уловил.
Только в чем смысл округления 80-разрядного значения в стеке
сопроцессора до 32-разрядного? Я чтото не представляю себе жизненных
случаев где это может пригодиться.<br><br><b>Добавлено @ 23:33</b><br>мм... развечто при сравнении... так тогда и надо округлять перед сравнением, а не всегда и везде, иначе какая это оптимизация %)<br><br><br>так или иначе, разговор начался с копирования float в стек, *уже округленного* float в стек.</font></td>
</tr>
</tbody></table>
<br> <table summary="table144" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: J0ker</b> 8.12.2008, 23:36</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">в том, что вы не можете просто так отрезать лишние биты при трансфере чисел с плавающей точкой<br>я
совершенно согласен, что можно, и даже иногда нужно оптимизировать
вычисления на FPU на ассемблере, т.к. стандартные типы пока не вмещают
полноразмерные числа с ПТ<br>но совершенно безосновательно возводить поклеп на умных людей написавших грамотный компилятор<br><br><b>Добавлено через 10 минут</b><br></font><div class="postcolor"><table class="quote" summary="table145" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;23:30&nbsp;<a href="http://forum.vingrad.ru/findpost-1720578.html" onclick="return getPost(1720578);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720578);"></a>)</td></tr><tr><td class="quote">так или иначе, разговор начался с копирования float в стек, *уже округленного* float в стек.</td></tr></tbody></table></div><font color="#000000" size="3" face="arial"><br>это вы знаете, что у вас там float, а процессору это нужно доказать&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile">&nbsp;</font></td>
</tr>
</tbody></table>
<br> <table summary="table146" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 8.12.2008, 23:47</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table147" cellspacing="0"><tbody><tr><td><b>Цитата</b>(J0ker&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;23:36&nbsp;<a href="http://forum.vingrad.ru/findpost-1720587.html" onclick="return getPost(1720587);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720587);"></a>)</td></tr><tr><td class="quote">в том, что вы не можете просто так отрезать лишние биты при трансфере чисел с плавающей точкой</td></tr></tbody></table></div><br>Так я и не понял с этими отрезаниями.....<br>У
меня в памяти есть 32-разрядный float. Готовый, правильный, безо всяких
подвохов float. Почему компилятор не копирует его в стек командой push
[mem32], а генерит fld [mem32] / fstp [mem32] ?? В стеке же оказывается
одно и тоже значение...<br><div class="postcolor"><table class="quote" summary="table148" cellspacing="0"><tbody><tr><td><b>Цитата</b>(J0ker&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;23:36&nbsp;<a href="http://forum.vingrad.ru/findpost-1720587.html" onclick="return getPost(1720587);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720587);"></a>)</td></tr><tr><td class="quote"><br>я
совершенно согласен, что можно, и даже иногда нужно оптимизировать
вычисления на FPU на ассемблере, т.к. стандартные типы пока не вмещают
полноразмерные числа с ПТ</td></tr></tbody></table></div><br>кто невмещает? в С++ нет 10-байтового вещественного чтоли?<br><br><b>Добавлено через 2 минуты и 56 секунд</b><br>действительно нет.... везде есть, а в С++ нет.... как же так %)</font></td>
</tr>
</tbody></table>
<br> <table summary="table149" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: J0ker</b> 8.12.2008, 23:53</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">c'est la vie<br></font></td>
</tr>
</tbody></table>
<br> <table summary="table150" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 8.12.2008, 23:53</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table151" cellspacing="0"><tbody><tr><td><b>Цитата</b>(J0ker&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;23:36&nbsp;<a href="http://forum.vingrad.ru/findpost-1720587.html" onclick="return getPost(1720587);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720587);"></a>)</td></tr><tr><td class="quote">это вы знаете, что у вас там float, а процессору это нужно доказать&nbsp;</td></tr></tbody></table></div><br>что доказать????<br>004016DE&nbsp;&nbsp;push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ecx&nbsp;&nbsp;;&nbsp;sub esp,SizeOf(<b>dword</b>)<br>004016DF&nbsp;&nbsp;fld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>dword</b>&nbsp;ptr [esp+38h]&nbsp;<br>004016E3&nbsp;&nbsp;fstp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>dword</b>&nbsp;ptr [esp]&nbsp;<br>004016E6&nbsp;&nbsp;call&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;00401650&nbsp;<br>float и dword это одно и то же, что тут доказывать процессору?</font></td>
</tr>
</tbody></table>
<br> <table summary="table152" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: J0ker</b> 9.12.2008, 00:00</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">опа, вот и я не прав<br>long double в стандарте оказывается... проморгал&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile"><br><br><b>Добавлено через 2 минуты и 34 секунды</b><br><div class="postcolor"><table class="quote" summary="table153" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;23:53&nbsp;<a href="http://forum.vingrad.ru/findpost-1720605.html" onclick="return getPost(1720605);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720605);"></a>)</td></tr><tr><td class="quote">004016DF&nbsp;&nbsp;fld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword ptr [esp+38h]&nbsp;<br>004016E3&nbsp;&nbsp;fstp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword ptr [esp]&nbsp;<br>004016E6&nbsp;&nbsp;call&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;00401650&nbsp;<br>float и dword это одно и то же, что тут доказывать процессору?&nbsp;</td></tr></tbody></table></div><br>я ж вам уже сказал - что у вас там лежит в памяти известно только вам</font></td>
</tr>
</tbody></table>
<br> <table summary="table154" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 9.12.2008, 00:27</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">Итак, it's a showdown!!!<br><br>Алгоритм
- интегрирование методом трапеций. Интегрируется косинус, при этом
специально не используется его свойство периодичности. В общем, смотри
код:<br></font><div class="postcolor"><table class="code" summary="table155" cellspacing="0"><tbody><tr><td><b>Код</b></td></tr><tr><td class="code"><script language="javascript" type="text/javascript">includeSyntax('cpp');</script><code id="cpp_NjI1Zm"><br>#include&nbsp;&lt;cstdlib&gt;<br>#include&nbsp;&lt;cmath&gt;<br>#include&nbsp;&lt;iostream&gt;<br>using namespace std;<br><br>const float pi = static_cast&lt;float&gt;(&nbsp;M_PI&nbsp;);<br><br>float cosint(&nbsp;float a, float b, int N&nbsp;)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;float sum = 0.0f;<br>&nbsp;&nbsp;&nbsp;&nbsp;float h =&nbsp;(b - a)&nbsp;/ N;<br>&nbsp;&nbsp;&nbsp;&nbsp;for(&nbsp;float cur = a + h;&nbsp;cur&nbsp;&lt;&nbsp;b;&nbsp;cur += h&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum += cos(&nbsp;cur&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(&nbsp;sum +&nbsp;(&nbsp;cos(a)&nbsp;+ cos(b)&nbsp;)&nbsp;* 0.5f&nbsp;)&nbsp;* h;<br>}<br><br>int main()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;clock_t before = clock();<br>&nbsp;&nbsp;&nbsp;&nbsp;float result = cosint(&nbsp;0.0f, 1000.0f * pi, 10000000&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;clock_t after = clock();<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;&lt;&lt;&nbsp;result&nbsp;&lt;&lt;&nbsp;"&nbsp;--&nbsp;"&nbsp;&lt;&lt;&nbsp;(after
- before)&nbsp;/
1000.0&nbsp;&lt;&lt;&nbsp;"&nbsp;seconds."&nbsp;&lt;&lt;&nbsp;endl;<br>}<br><br></code></td></tr></tbody></table></div><script language="javascript" type="text/javascript">highlightSyntax('cpp_NjI1Zm','cpp');</script><font color="#000000" size="3" face="arial"><br><br>Код, кстати, кроссплатформенней некуда. Компилировал с помощью MinGW со следующими параметрами=:<br><br>g++
-msse3 -mfancy-math-387 -m80387 -mhard-float -mtune=pentium4
-march=pentium4 -mthreads -mfp-ret-in-387 -mieee-fp -O3
-funroll-loops&nbsp;&nbsp;-o showdown.exe showdown.cpp<br><br>После этого прогнал через strip:<br>strip -s showdown.exe<br><br>Прикладываю экзешник. Удачи, чувак&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/crazy.gif" src="l2client_internal_hooks_files/crazy.gif" alt="smile">&nbsp;</font></td>
</tr>
</tbody></table>
<br> <table summary="table156" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 9.12.2008, 14:44</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>Kallikanzarid</b>, ты бы перед тем как выкладывать код с бинарником, убедился бы в их качестве<br>код - неудобный, хз как у вас а меня еще в школе учили в конце консольной программы вставлять паузу.<br>функция - неоптимизирована, про использование for я вообще промолчу...&nbsp;<br><br>а самое главное, в бинарнике видно что компилятор заинлайнил cosint() и заменил ее аргументы константами.<br>получилось както так:<br></font><div class="postcolor"><table class="code" summary="table157" cellspacing="0"><tbody><tr><td><b>Код</b></td></tr><tr><td class="code"><script language="javascript" type="text/javascript">includeSyntax('cpp');</script><code id="cpp_zdjNjg"><br>&nbsp;&nbsp;&nbsp;&nbsp;clock_t before = clock();<br>&nbsp;&nbsp;&nbsp;&nbsp;float sum = 0.0f;<br>&nbsp;&nbsp;&nbsp;&nbsp;float h = 1000.0f * pi / 10000000;<br>&nbsp;&nbsp;&nbsp;&nbsp;for(&nbsp;float cur = h;&nbsp;cur&nbsp;&lt;&nbsp;1000.0f * pi;&nbsp;cur += h&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum += cos(&nbsp;cur&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;result =&nbsp;&nbsp;(&nbsp;sum + cos(1000.0f * pi)&nbsp;* 0.5f&nbsp;)&nbsp;* h;<br>&nbsp;&nbsp;&nbsp;&nbsp;clock_t after = clock();<br></code></td></tr></tbody></table></div><script language="javascript" type="text/javascript">highlightSyntax('cpp_zdjNjg','cpp');</script><font color="#000000" size="3" face="arial"><br>так и было задумано?) а что сразу так не написал?)))</font></td>
</tr>
</tbody></table>
<br> <table summary="table158" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 9.12.2008, 15:09</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>GoldFinch</b>,<br><br>1) За годы практики я убедился, встроенная в саму программу пауза - это зло. Намного лучше создавать для этой цели .bat-файл.<br>2)
Я специально ничего не оптимизировал, чтобы функция выполнялась
достаточно долго, и чтобы компилятор мог проявить себя в раскрутке
циклов и т. д.<br>3) for и правда не самый оптимальный (и, к тому же,
накапливающий погрешность), но мы ведь спорили об оптимизации FPU-кода,
так? Вот я и стараюсь загрузить его по максимуму.<br>4) Инлайн есть гут&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/smile.gif" src="l2client_internal_hooks_files/smile.gif" alt="smile">&nbsp;Оптимизирующий
компилятор ведь должен оптимизировать, так? Но в любом случае я
сомневаюсь, что один дополнительный вызов бы сделал погоду.<br>5) Да, так и было задумано&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/angel.gif" src="l2client_internal_hooks_files/angel.gif" alt="smile"><br><br><b>Добавлено через 3 минуты и 8 секунд</b><br>float
вместо double я тоже использовал в своих корыстных целях, дабы
векторизация дала прирост x4, а не x2. Хотя этот алгоритм не особенно
хорош для SSE, так что, может быть, код там использует только FPU. Хз,
я через BIEW не прогонял.</font></td>
</tr>
</tbody></table>
<br> <table summary="table159" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 9.12.2008, 17:10</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">Решение&nbsp;"в лоб", без FPU-оптимизации, бинарник (2кб) в архиве<br></font><div class="postcolor"><table class="code" summary="table160" cellspacing="0"><tbody><tr><td><b>Код</b></td></tr><tr><td class="code"><script language="javascript" type="text/javascript">includeSyntax('nocolor');</script><code id="nocolor_lNzc4Z"><br>include&nbsp;'win32a.inc'<br>include&nbsp;'hll.inc'<br>format PE GUI 4.0<br>;=====================================================<br>section&nbsp;'.data'&nbsp;data readable writeable<br>;------------------------<br>IMPORTS KERNEL32.DLL,&nbsp;&lt;ExitProcess,GetTickCount,Sleep&gt;,\<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;USER32.DLL,&nbsp;&nbsp;&nbsp;&lt;wsprintfA,MessageBoxA&gt;<br>;------------------------<br>m dd 100000000 ;8digits=32/4<br>gRealBuf:&nbsp;dt ?<br>gMsgBuf db 1024 dup ?<br>;=====================================================<br>section&nbsp;'.code'&nbsp;code readable executable<br>entry&nbsp;$<br>;&nbsp;float result = cosint(&nbsp;0.0f, 1000.0f * pi, 10000000&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetTickCount()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;push eax<br>;A=0<br>;B=1000.0f * pi<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;-----------------------------------------------------<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jmp @f<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b_pi dd 1e+3 ;b/pi<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h_pi dd 1e-4 ;h/pi=(b/pi)/N<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_0.5 dd 0.5<br>@@:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fldpi ;pi<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fmul&nbsp;[h_pi]&nbsp;;h<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fldpi ;pi,h<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fmul&nbsp;[b_pi]&nbsp;;b,h<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fcos ;cos(b),h<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fmul&nbsp;[_0.5]&nbsp;;sum,h<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fld st1 ;cur,sum,h<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov ecx,10000000<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dec ecx ;N-1<br>.loo:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;cur,sum,h<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fld st0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;cur,cur,sum,h<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fcos&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;cos(cur),cur,sum,h<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;faddp st2,st0 ;cur,sum',h<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fadd st0,st2&nbsp;&nbsp;;cur',sum',h<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;loop .loo<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fxch st2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;h,sum,cur<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fmul st0,st1&nbsp;&nbsp;;result<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;-----------------------------------------------------<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetTickCount()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pop edx<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sub eax,edx<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fimul&nbsp;[m]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fbstp tword&nbsp;[gRealBuf]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wsprintfA(gMsgBuf,"Result = %x.%08x, Time = %dms",[gRealBuf+4],[gRealBuf],eax)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageBoxA(0,gMsgBuf,"Result",0)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExitProcess()<br>;=====================================================<br>section&nbsp;'.reloc'&nbsp;fixups data discardable<br></code></td></tr></tbody></table></div><script language="javascript" type="text/javascript">highlightSyntax('nocolor_lNzc4Z','nocolor');</script><font color="#000000" size="3" face="arial"><br><br>на моем компе код Kallikanzarid'а работает 704мс, мой код работает 563мс, 20% разница<br>P4 3ГГц, WinXPSp2</font></td>
</tr>
</tbody></table>
<br> <table summary="table161" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 9.12.2008, 18:51</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">Хорошо... но недостаточно!<br>Я
немного подправил код, сделав цикл целочисленным. Это скостило совсем
немного, зато точность возрасла до твоей. Зато потом я дорвался до
документации GCC, хехе. В общем, качай.</font></td>
</tr>
</tbody></table>
<br> <table summary="table162" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: J0ker</b> 9.12.2008, 19:34</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>Kallikanzarid</b>, я те советую воспользоваться OpenMP<br>и пусть&nbsp;<b>GoldFinch</b>, попробует угнаться&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile">&nbsp;</font></td>
</tr>
</tbody></table>
<br> <table summary="table163" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 9.12.2008, 19:35</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>Kallikanzarid</b>, осталось время измерять не +-10%<br>какбэ
clock() вызывает GetSystemTimeAsFileTime, а это очень плохой метод
измерения, да и увеличивать время измерения увеличивая время работы
тестируемого алгоритма не самый лучший подход<br><br>кстати, что это у
тя прога весит 275кб и требует несистемную дллку msvcrt.dll? а зачем у
тя в архиве дллка mingwm10.dll, для весу?<br><br>ЗЫ: между прочим, мы начинали разговор именно о MSVC</font></td>
</tr>
</tbody></table>
<br> <table summary="table164" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 9.12.2008, 19:58</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>J0ker</b>, у него один проц, скажет, что ничего не заметил&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile">&nbsp;<br><br><b>GoldFinch</b>,<br><br><div class="postcolor"><table class="quote" summary="table165" cellspacing="0"><tbody><tr><td><b>Цитата</b></td></tr><tr><td class="quote"><br>кстати, что это у тя прога весит 275кб и требует несистемную дллку msvcrt.dll<br></td></tr></tbody></table></div><br>Пошли
отговорки? ;-) Прога вести 275 кб, потому что использует статический
билд libc++. msvcrt.dll есть в каждом дистрибутиве Windows, это
реализация рантайма С. Если подумать, использование в качестве бэкэнда
для libc++ родной для каждой платформы реализации C runtime - логичный
ход со стороны GNU.<br><br><div class="postcolor"><table class="quote" summary="table166" cellspacing="0"><tbody><tr><td><b>Цитата</b></td></tr><tr><td class="quote"><br>а зачем у тя в архиве дллка mingwm10.dll, для весу?<br></td></tr></tbody></table></div><br>ХЗ, но билд ее требует.<br><br><div class="postcolor"><table class="quote" summary="table167" cellspacing="0"><tbody><tr><td><b>Цитата</b></td></tr><tr><td class="quote"><br>ЗЫ: между прочим, мы начинали разговор именно о MSVC<br></td></tr></tbody></table></div><br>Нет уж, теперь ты не отвертишься&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile">&nbsp;Кстати, считается, что у MSVC генерируемый код лучше, чем у гнуса.<br><br><div class="postcolor"><table class="quote" summary="table168" cellspacing="0"><tbody><tr><td><b>Цитата</b></td></tr><tr><td class="quote"><br>какбэ clock() вызывает GetSystemTimeAsFileTime, а это очень плохой метод измерения<br></td></tr></tbody></table></div><br>В интересах науки заменил clock() на GetTickCount(). Результат практически не изменился. Архив прилагается.<br><br><div class="postcolor"><table class="quote" summary="table169" cellspacing="0"><tbody><tr><td><b>Цитата</b></td></tr><tr><td class="quote"><br>да и увеличивать время измерения увеличивая время работы тестируемого алгоритма не самый лучший подход<br></td></tr></tbody></table></div><br>Почему?
Тут меняется только число итераций. С тем же успехом можно взять
компактный алгоритм, прогнать его несколько тысяч раз и взять среднее
арифметическое время. На протяжении почти всех итераций код и данные
будут в кэше, и это может сказаться, но для сравнения эффективности
кода той или иной реализации это не так важно.</font></td>
</tr>
</tbody></table>
<br> <table summary="table170" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 9.12.2008, 20:12</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>Kallikanzarid</b>, у меня код 2кб, в 137 раз меньше, если слить секции в 1 - будет весить 1кб, в 275 раз меньше<br>если я говорил что у MSVC кодогенератор гуан* то зачем выкладывать код сгенереный gcc?<br>и GetTickCount() тоже плохая идея, я его юзал только чтобы получать результат в секундах, мерить производительность лучше&nbsp;<i>rdtsc</i><br>мерять
лучше так - сделать небольшую длительность 1 измерения (в идеале меньше
1 кванта времени), выполнить Sleep чтобы измерение началось в начале
кванта, замерить, выполнить Sleep, замерить и т.д., а все замеры
просуммировать</font></td>
</tr>
</tbody></table>
<br> <table summary="table171" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 9.12.2008, 20:19</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table172" cellspacing="0"><tbody><tr><td><b>Цитата</b></td></tr><tr><td class="quote"><br>мерить производительность лучше rdtsc<br>мерять
лучше так - сделать небольшую длительность 1 измерения (в идеале меньше
1 кванта времени), выполнить Sleep чтобы измерение началось в начале
кванта, замерить, выполнить Sleep, замерить и т.д., а все замеры
просуммировать&nbsp;<br></td></tr></tbody></table></div><br>А зачем? ИМХО, картина и так ясна.<br><br><div class="postcolor"><table class="quote" summary="table173" cellspacing="0"><tbody><tr><td><b>Цитата</b></td></tr><tr><td class="quote"><br>если я говорил что у MSVC кодогенератор гуан* то зачем выкладывать код сгенереный gcc?<br></td></tr></tbody></table></div><br>Ты
хаил портируемый код и С++ вообще. Можешь поиграться с настройками MSVC
в качестве домашнего задания. Бенчмарки показывают, что его код
быстрее, чем у GCC.<br><br><div class="postcolor"><table class="quote" summary="table174" cellspacing="0"><tbody><tr><td><b>Цитата</b></td></tr><tr><td class="quote"><br>у меня код 2кб, в 137 раз меньше, если слить секции в 1 - будет весить 1кб, в 275 раз меньше<br></td></tr></tbody></table></div><br>Допустим. И что?&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/dance3.gif" src="l2client_internal_hooks_files/dance3.gif" alt="smile">&nbsp;<br><br>Предлагаю
начать новый раунд эпического противостояния. На этот раз проверим
работу с памятью, в частности, с массивами. Выбирай задачу&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/smile.gif" src="l2client_internal_hooks_files/smile.gif" alt="smile"></font></td>
</tr>
</tbody></table>
<br> <table summary="table175" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 9.12.2008, 20:20</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table176" cellspacing="0"><tbody><tr><td><b>Цитата</b>(Kallikanzarid&nbsp;@&nbsp;&nbsp;9.12.2008,&nbsp;&nbsp;20:19&nbsp;<a href="http://forum.vingrad.ru/findpost-1721393.html" onclick="return getPost(1721393);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1721393);"></a>)</td></tr><tr><td class="quote">Ты хаил портируемый код и С++ вообще.&nbsp;</td></tr></tbody></table></div><br>цитату</font></td>
</tr>
</tbody></table>
<br> <table summary="table177" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: J0ker</b> 9.12.2008, 20:22</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table178" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;9.12.2008,&nbsp;&nbsp;20:12&nbsp;<a href="http://forum.vingrad.ru/findpost-1721388.html" onclick="return getPost(1721388);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1721388);"></a>)</td></tr><tr><td class="quote">если я говорил что у MSVC кодогенератор гуан*</td></tr></tbody></table></div><br>мыж уже вроде решили что гуан* не компилятор, а ваше понимание?&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile">&nbsp;</font></td>
</tr>
</tbody></table>
<br> <table summary="table179" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 9.12.2008, 20:25</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">Цитата:<br><div class="postcolor"><table class="quote" summary="table180" cellspacing="0"><tbody><tr><td><b>Цитата</b></td></tr><tr><td class="quote"><br>Kallikanzarid,
из-за&nbsp;"кроссплатформенности", в С(++) нет способа средствами языка
сгенерить некоторые x86-87 команды, например загрузку констант в
FPU.&nbsp;<br>Т.е. в некроссплатформенном паскале есть
оператор(функция) Pi который генерит fldpi, а в кроссплатформенном
С(++) оператора Pi() нет, и способа сгенерить fldpi (и другие
константы) тоже нет.<br>Впрочем код C++ для FPU местами ужасен %) Ни один нормальный программист такого бы не писал.&nbsp;<br></td></tr></tbody></table></div><br>Как наиболее характерный образчик.</font></td>
</tr>
</tbody></table>
<br> <table summary="table181" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 9.12.2008, 20:31</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table182" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;8.12.2008,&nbsp;&nbsp;20:05&nbsp;<a href="http://forum.vingrad.ru/findpost-1720387.html" onclick="return getPost(1720387);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1720387);"></a>)</td></tr><tr><td class="quote">ок, будет говорить исключительно о компиляторе MSVC. так вот у него кодогенератор - гуан*<br><br>насчет кода для FPU - вот так вот в MSVC передаются 32-разрядные значения float<br>.text:10001344&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[esp+18h+arg_4]<br>.text:10001348&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fstp&nbsp;&nbsp;&nbsp;&nbsp;[esp+18h+var_14]<br>.text:1000134C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword
ptr [eax+4]<br>.text:1000134F&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fstp&nbsp;&nbsp;&nbsp;&nbsp;[esp+18h+var_18]<br>.text:10001352&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;&nbsp;&nbsp;&nbsp;FCanvasUtil::DrawLine(float,float,float,float,FColor,int)</td></tr></tbody></table></div><br>только в следующем же посте я уточнил что речь идет о MSVC и начал приводить примеры его кодогенерации<br><br><br>Хочешь эпического противостояния? по размеру оптимизировать будем?</font></td>
</tr>
</tbody></table>
<br> <table summary="table183" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: J0ker</b> 9.12.2008, 20:36</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table184" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;9.12.2008,&nbsp;&nbsp;20:31&nbsp;<a href="http://forum.vingrad.ru/findpost-1721405.html" onclick="return getPost(1721405);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1721405);"></a>)</td></tr><tr><td class="quote">только в следующем же посте я уточнил что речь идет о MSVC и начал приводить примеры его кодогенерации</td></tr></tbody></table></div><br>вы игнорируете мой вопрос?&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile">&nbsp;<br><br><div class="postcolor"><table class="quote" summary="table185" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;9.12.2008,&nbsp;&nbsp;20:31&nbsp;<a href="http://forum.vingrad.ru/findpost-1721405.html" onclick="return getPost(1721405);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1721405);"></a>)</td></tr><tr><td class="quote">Хочешь эпического противостояния? по размеру оптимизировать будем?&nbsp;</td></tr></tbody></table></div><br><br><b>Kallikanzarid</b>,
соглашайтесь - придумайте задачу, использующую как можно больше функций
CRT - printf например - пусть затрахается и заодно посоревнуется в
оптимизации на реальных программах&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile">&nbsp;</font></td>
</tr>
</tbody></table>
<br> <table summary="table186" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 9.12.2008, 20:36</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">Оптимизируем по времени выполнения.</font></td>
</tr>
</tbody></table>
<br> <table summary="table187" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 9.12.2008, 20:43</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>Kallikanzarid</b>, а что не по размеру? Там в компиляторе даже опция есть,&nbsp;"оптимизировать по размеру", в MSVC по крайней мере</font></td>
</tr>
</tbody></table>
<br> <table summary="table188" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: J0ker</b> 9.12.2008, 20:46</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>GoldFinch</b>, передергиваете, да?&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile">&nbsp;аргУменты кончаются?&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile">&nbsp;<br></font></td>
</tr>
</tbody></table>
<br> <table summary="table189" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 9.12.2008, 20:50</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>GoldFinch</b>, по
той простой причине, что все ЯВУ постоянно держат в памяти собственный
рантайм, так что тут им конкурировать с лишенным оного ассемблером
бессмысленно. Тем более, что размер экзешника в наши дни не особенно
важен, тем более, если счет идет на килобайты.</font></td>
</tr>
</tbody></table>
<br> <table summary="table190" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: J0ker</b> 9.12.2008, 20:51</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>Kallikanzarid</b>, можете соглашаться - существуют специальные ужатые версии CRT -&nbsp;http://www.microsoft.com/msj/archive/S569.aspx</font></td>
</tr>
</tbody></table>
<br> <table summary="table191" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 9.12.2008, 20:52</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>J0ker</b>, ну у вас-то они уже давно закончились</font></td>
</tr>
</tbody></table>
<br> <table summary="table192" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 9.12.2008, 20:54</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>J0ker</b>, да ну,
зачем мне такие извращения? У меня 1 гиг памяти, полгига видеопамяти, 2
мега кэш второго уровня, 150 гигов дискового пространства и безлимитный
интернет на 1 мегабит - а я буду бороться с лишними килобайтами
экзешника?</font></td>
</tr>
</tbody></table>
<br> <table summary="table193" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 9.12.2008, 20:55</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>Kallikanzarid</b>, это смотря в какой сфере объем не критичен, кое где четверть метра это очень много<br><br><b>Добавлено через 55 секунд</b><br><div class="postcolor"><table class="quote" summary="table194" cellspacing="0"><tbody><tr><td><b>Цитата</b>(Kallikanzarid&nbsp;@&nbsp;&nbsp;9.12.2008,&nbsp;&nbsp;20:54&nbsp;<a href="http://forum.vingrad.ru/findpost-1721432.html" onclick="return getPost(1721432);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1721432);"></a>)</td></tr><tr><td class="quote">J0ker,
да ну, зачем мне такие извращения? У меня 1 гиг памяти, полгига
видеопамяти, 2 мега кэш второго уровня, 150 гигов дискового
пространства и безлимитный интернет на 1 мегабит - а я буду бороться с
лишними килобайтами экзешника?&nbsp;</td></tr></tbody></table></div><br>поменьше бы таких программистов...</font></td>
</tr>
</tbody></table>
<br> <table summary="table195" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: J0ker</b> 9.12.2008, 20:56</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table196" cellspacing="0"><tbody><tr><td><b>Цитата</b>(Kallikanzarid&nbsp;@&nbsp;9.12.2008,&nbsp;&nbsp;20:54)</td></tr><tr><td class="quote"><b>J0ker</b>,
да ну, зачем мне такие извращения? У меня 1 гиг памяти, полгига
видеопамяти, 2 мега кэш второго уровня, 150 гигов дискового
пространства и безлимитный интернет на 1 мегабит - а я буду бороться с
лишними килобайтами экзешника?</td></tr></tbody></table></div><br>так я предлагаю взять и задачу посложнее - чтоб функций из CRT было побольше задействовано<br>чел
же не понимает, что как только понадобится использовать что-то
посложней - то придется либо самому все ручками писать (пусть
затрахается), либо подключать ту-же CRT - а результат по размеру буде
стремиться к общему - может тогда въедет, что такое мазохизм&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile"><br><br><b>Добавлено через 1 минуту и 44 секунды</b><br><div class="postcolor"><table class="quote" summary="table197" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;9.12.2008,&nbsp;&nbsp;20:55&nbsp;<a href="http://forum.vingrad.ru/findpost-1721433.html" onclick="return getPost(1721433);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1721433);"></a>)</td></tr><tr><td class="quote">Kallikanzarid, это смотря в какой сфере объем не критичен, кое где четверть метра это очень много</td></tr></tbody></table></div><br>а, простите мое любопытство, ГДЕ?</font></td>
</tr>
</tbody></table>
<br> <table summary="table198" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 9.12.2008, 21:02</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table199" cellspacing="0"><tbody><tr><td><b>Цитата</b></td></tr><tr><td class="quote"><br>так я предлагаю взять и задачу посложнее - чтоб функций из CRT было побольше задействовано<br></td></tr></tbody></table></div><br>Не,
это уже ниже пояса. Лучше взять вычислительную задачу, но с
использованием массивов. А то предыдущая не дала развернуться раскрутке
циклов и автоматической векторизации :-(<br><br><b>Добавлено через 1 минуту и 51 секунду</b><br><div class="postcolor"><table class="quote" summary="table200" cellspacing="0"><tbody><tr><td><b>Цитата</b></td></tr><tr><td class="quote"><br>поменьше бы таких программистов...&nbsp;<br></td></tr></tbody></table></div><br>Как
сказать. Я хотел плакать, когда узнал, как разработчики ОС Minuet
гордятся своим TCP-стеком. Именно тем фактом, что им удалось сделать
TCP-стек. На ассемблере.</font></td>
</tr>
</tbody></table>
<br> <table summary="table201" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 9.12.2008, 21:16</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>J0ker</b>, вы когданить видели например графическую ОС которая влезает на дискету?<br><br><b>Kallikanzarid</b>, а ты сделал свой TCP-стек чтобы так говорить? Или знаеш как его сделать?</font></td>
</tr>
</tbody></table>
<br> <table summary="table202" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 9.12.2008, 21:22</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table203" cellspacing="0"><tbody><tr><td><b>Цитата</b></td></tr><tr><td class="quote"><br>J0ker, вы когданить видели например графическую ОС которая влезает на дискету?<br><br>Kallikanzarid, а ты сделал свой TCP-стек чтобы так говорить? Или знаеш как его сделать?&nbsp;<br></td></tr></tbody></table></div><br>1) Я уже давно не видел ни одной&nbsp;<i>дискеты</i>.<br>2) Нет. Меня этот вопрос не интересовал. Однако я знаю, что в никсах эти стеки были, еще когда меня на свете не было.<br><br>ЗЫ: так новый раунд будет? Ты уже выбрал задачу?</font></td>
</tr>
</tbody></table>
<br> <table summary="table204" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: J0ker</b> 9.12.2008, 21:23</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table205" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;9.12.2008,&nbsp;&nbsp;21:16&nbsp;<a href="http://forum.vingrad.ru/findpost-1721457.html" onclick="return getPost(1721457);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1721457);"></a>)</td></tr><tr><td class="quote">J0ker, вы когданить видели например графическую ОС которая влезает на дискету?</td></tr></tbody></table></div><br>а зачем? у меня и флоповода-то нету&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile">&nbsp;<br>зато есть стааааарый флеш-драйв купленный лет 5-6 назад размером 512 метров&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/blum3.gif" src="l2client_internal_hooks_files/blum3.gif" alt="smile">&nbsp;<br>и,
если мне не изменяет память, размер даже 5-ти дюймового диска был 360кБ
в пору моей молодости (извините, перфокарты зацепил только чуть-чуть) -
так размер CRT все равно меньше значительно, а всю функциональность
иначе вам придется ручками писать и вы все равно придете к тому-же
размеру&nbsp;&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile"><br><br><b>Добавлено через 1 минуту и 57 секунд</b><br><div class="postcolor"><table class="quote" summary="table206" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;9.12.2008,&nbsp;&nbsp;21:16&nbsp;<a href="http://forum.vingrad.ru/findpost-1721457.html" onclick="return getPost(1721457);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1721457);"></a>)</td></tr><tr><td class="quote">а ты сделал свой TCP-стек чтобы так говорить? Или знаеш как его сделать?&nbsp;</td></tr></tbody></table></div><br>я не писал<br>но знаю как<br>не вижу здесь никакого геройства кроме гемороя<br>задача-то тривиальная, все стандарты есть</font></td>
</tr>
</tbody></table>
<br> <table summary="table207" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Mayk</b> 10.12.2008, 08:25</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">клйовый тред, в избранное!<br><br><div class="postcolor"><table class="quote" summary="table208" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;10.12.2008,&nbsp;&nbsp;00:55&nbsp;<a href="http://forum.vingrad.ru/findpost-1721433.html" onclick="return getPost(1721433);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1721433);"></a>)</td></tr><tr><td class="quote"><br>поменьше бы таких программистов...&nbsp;</td></tr></tbody></table></div><br>Действительно кому нужны программеры которые вместо того чтобы писать 2 часа на асме будут писать пять минут на си?<br><br><div class="postcolor"><table class="quote" summary="table209" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;10.12.2008,&nbsp;&nbsp;01:16&nbsp;<a href="http://forum.vingrad.ru/findpost-1721457.html" onclick="return getPost(1721457);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1721457);"></a>)</td></tr><tr><td class="quote">вы когданить&nbsp;<b>видели</b>&nbsp;например графическую ОС которая влезает на дискету?</td></tr></tbody></table></div><br>Ну я видел&nbsp;&nbsp;MenuetOS.&nbsp;&nbsp;Не&nbsp;&nbsp;знаю что с ним еще можно сделать кроме как&nbsp;"увидеть".&nbsp;</font></td>
</tr>
</tbody></table>
<br> <table summary="table210" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 10.12.2008, 13:07</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table211" cellspacing="0"><tbody><tr><td><b>Цитата</b>(Kallikanzarid&nbsp;@&nbsp;&nbsp;9.12.2008,&nbsp;&nbsp;21:22&nbsp;<a href="http://forum.vingrad.ru/findpost-1721465.html" onclick="return getPost(1721465);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1721465);"></a>)</td></tr><tr><td class="quote">так новый раунд будет? Ты уже выбрал задачу?&nbsp;</td></tr></tbody></table></div><br>близкую
к реальной задачу значит... допустим так... надо разработать программу
для генерации SFX архивов, размер распаковщика определяется следующими
требованиями:<br>архивы хранятся в библиотеке архивов на хостинге с максимально доступным дисковым пространством 100Мб,<br>файлов примерно 500-550,<br>размер 1 файла в диапазоне от 10 до 350кБ,&nbsp;<br>распаковщик должен быть не более 20% от размера файла<br><br>целевая
ОС - 32разрядная WinXP, т.к. задача тестовая - никакой реальной
упаковки не требуется, при запуске распаковщик извлекает файл в
указанную пользователем папку.<br></font></td>
</tr>
</tbody></table>
<br> <table summary="table212" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 10.12.2008, 14:06</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">Что, на производительность асма ты забил? Зачем опять гнешь свои 2кб? Блин, будь мужчиной уже&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/nea.gif" src="l2client_internal_hooks_files/nea.gif" alt="smile">&nbsp;</font></td>
</tr>
</tbody></table>
<br> <table summary="table213" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 10.12.2008, 15:01</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>Kallikanzarid</b>,
так или иначе, каким бы производительным твой код не был, я всегда могу
извлечь код из твоего бинарника, оптимизировть и засунуть в свой. Там
всегда будет что оптимизировать, и я хз о каком соревновании тут может
идти речь.</font></td>
</tr>
</tbody></table>
<br> <table summary="table214" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 10.12.2008, 15:06</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">Слив засчитан&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/dance3.gif" src="l2client_internal_hooks_files/dance3.gif" alt="smile">&nbsp;</font></td>
</tr>
</tbody></table>
<br> <table summary="table215" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Mayk</b> 10.12.2008, 15:21</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table216" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;10.12.2008,&nbsp;&nbsp;19:01&nbsp;<a href="http://forum.vingrad.ru/findpost-1722145.html" onclick="return getPost(1722145);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1722145);"></a>)</td></tr><tr><td class="quote">я всегда могу извлечь код из твоего бинарника, оптимизировть и засунуть в свой.</td></tr></tbody></table></div><br>это равносильно заявлению&nbsp;"компилятор пишет асмовский код лучше чем я"&nbsp;кстати</font></td>
</tr>
</tbody></table>
<br> <table summary="table217" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: mes</b> 10.12.2008, 15:44</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table218" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;10.12.2008,&nbsp;&nbsp;15:01&nbsp;<a href="http://forum.vingrad.ru/findpost-1722145.html" onclick="return getPost(1722145);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1722145);"></a>)</td></tr><tr><td class="quote">Kallikanzarid,
так или иначе, каким бы производительным твой код не был, я всегда могу
извлечь код из твоего бинарника, оптимизировть и засунуть в свой. Там
всегда будет что оптимизировать, и я хз о каком соревновании тут может
идти речь.&nbsp;</td></tr></tbody></table></div><br>Да неблагодарное
это дело, сравнивать языки без ориентировки на определенную задачу. Так
же как например взять русский и английский. Имхо, у русского больше
форм и возможностей выражения<br>- но это его преимущество является недостатком, при техническом применение. Английский же в данном аспекте более удобен.<br><br>Также
cpp, c, asm разняться от абстрактности мысли к ее точному применению.
Да на асме можно заточить алгоритм под конкретную архитектуру ..
решенная эта же задача на си будет переносима,&nbsp;<br>а на cpp к тому
же даст гарантию проверки типов. Т.е отдаляясь от точности разъяснения
алгоритма конкретной машины, мы приходим к тому что машина (компилятор)
сама подгоняет и контролирует&nbsp;<br>код, а результативный код
удовлетворяет выдвинутым задачей требованиям (в одних случаях критичен
размер, в других скорость, в третьих безопасность кода и длительная
поддержа и расширение)<br><br>Тесты показывают что c/cpp не отстает от
асма по скорости. Да по размеру бинарника асм
выигрывает,&nbsp;&nbsp;зато проигрывает в ых сферах с человеческим
фактором..&nbsp;&nbsp;<br>Ну а&nbsp;&nbsp;скорость и размер для&nbsp;"потребительских"&nbsp;задач уже давно перестали быть решающим требованиями..<br><br>Я
считаю что максимальный эффект можно добиться если правильно подобрать
инструмент/ы к текущей задаче (прокопать&nbsp;&nbsp;тунель под
Ла-Маншем лопатой конечно геройство, но задача трудновыполнимая и не
имеющая смысла), но также не надо забывать, что языки всего лишь
инструмент, и основное зависит от того насколько им хорошо умеет
пользоваться программист&nbsp;&nbsp;е<br><br><br><br></font></td>
</tr>
</tbody></table>
<br> <table summary="table219" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 10.12.2008, 15:47</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>mes</b>, тссс! Не порть знатный срачег.</font></td>
</tr>
</tbody></table>
<br> <table summary="table220" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 10.12.2008, 16:37</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table221" cellspacing="0"><tbody><tr><td><b>Цитата</b>(mes&nbsp;@&nbsp;&nbsp;10.12.2008,&nbsp;&nbsp;15:44&nbsp;<a href="http://forum.vingrad.ru/findpost-1722197.html" onclick="return getPost(1722197);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1722197);"></a>)</td></tr><tr><td class="quote">языки всего лишь инструмент, и основное зависит от того насколько им хорошо умеет пользоваться программист</td></tr></tbody></table></div><br>ага,
так или иначе, подобное сравнение упирается не в сравнение
производительности программы вручную написанной на асме против
производительности программы написанной на ЯВУ, а в мастерство одно и
другого программиста.<br>в конце концов компилятор ЯВУ&nbsp;&nbsp;-
инструмент и ничто не мешает взять автоматически сгенерированный им код
и вручную доработать его до идеала.</font></td>
</tr>
</tbody></table>
<br> <table summary="table222" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: mes</b> 10.12.2008, 17:10</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table223" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;10.12.2008,&nbsp;&nbsp;16:37&nbsp;<a href="http://forum.vingrad.ru/findpost-1722281.html" onclick="return getPost(1722281);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1722281);"></a>)</td></tr><tr><td class="quote">инструмент и ничто не мешает взять автоматически сгенерированный им код и вручную доработать его до идеала.&nbsp;</td></tr></tbody></table></div><br>такой способ (если конечно ручная доводка необходимa) также присутствует в данной цитате :<br><br><div class="postcolor"><table class="quote" summary="table224" cellspacing="0"><tbody><tr><td><b>Цитата</b>(mes&nbsp;@&nbsp;&nbsp;10.12.2008,&nbsp;&nbsp;15:44&nbsp;<a href="http://forum.vingrad.ru/findpost-1722197.html" onclick="return getPost(1722197);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1722197);"></a>)</td></tr><tr><td class="quote">максимальный эффект можно добиться если правильно подобрать инструмент/ы</td></tr></tbody></table></div><br>&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/smile.gif" src="l2client_internal_hooks_files/smile.gif" alt="smile">&nbsp;<br></font></td>
</tr>
</tbody></table>
<br> <table summary="table225" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 10.12.2008, 17:17</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">а всетаки
программирование на асме ничуть не медленнее программирования на С++,
даже быстрее с учетом времени создания нового проекта и компиляции.
опять же на .ехешку в 1кб смотреть приятно<br></font><div class="postcolor"><table class="code" summary="table226" cellspacing="0"><tbody><tr><td><b>Код</b></td></tr><tr><td class="code"><script language="javascript" type="text/javascript">includeSyntax('nocolor');</script><code id="nocolor_zI4NTQ"><br>include&nbsp;'win32a.inc'<br>include&nbsp;'hll.inc'<br>format PE GUI 4.0<br>section&nbsp;'AllInOne'&nbsp;code readable writeable executable<br>IMPORTS KERNEL32.DLL,&nbsp;&lt;ExitProcess,GetLastError,FormatMessageA&gt;,\<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;USER32.DLL,&nbsp;&nbsp;&nbsp;&lt;SetWindowPos,FindWindowA,MessageBoxA&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;psMsg dd ?<br>entry&nbsp;$<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FindWindowA("GcxPropertyPageSite.Window.1",0)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test eax,eax<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jz .err<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetWindowPos(eax,HWND_TOPMOST,0,0,0,0,SWP_SHOWWINDOW+SWP_NOSIZE)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test eax,eax<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jz .err<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExitProcess()<br>.err:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetLastError()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER+FORMAT_MESSAGE_FROM_SYSTEM+FORMAT_MESSAGE_IGNORE_INSERTS,\<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,eax,0,psMsg,0,0)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageBoxA(0,[psMsg],0,0)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExitProcess()<br></code></td></tr></tbody></table></div><script language="javascript" type="text/javascript">highlightSyntax('nocolor_zI4NTQ','nocolor');</script><font color="#000000" size="3" face="arial"></font></td>
</tr>
</tbody></table>
<br> <table summary="table227" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: J0ker</b> 10.12.2008, 17:19</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table228" cellspacing="0"><tbody><tr><td><b>Цитата</b>(mes&nbsp;@&nbsp;&nbsp;10.12.2008,&nbsp;&nbsp;15:44&nbsp;<a href="http://forum.vingrad.ru/findpost-1722197.html" onclick="return getPost(1722197);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1722197);"></a>)</td></tr><tr><td class="quote">Тесты показывают что c/cpp не отстает от асма по скорости.</td></tr></tbody></table></div><br>тесты
показывают, что как только задача сталкивается с реальностью
многоядерного процессора, то только гений может оптимизировать код
лучше компилятора<br><br><b>Добавлено через 1 минуту и 24 секунды</b><br><div class="postcolor"><table class="quote" summary="table229" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;10.12.2008,&nbsp;&nbsp;16:37&nbsp;<a href="http://forum.vingrad.ru/findpost-1722281.html" onclick="return getPost(1722281);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1722281);"></a>)</td></tr><tr><td class="quote">ничто не мешает взять автоматически сгенерированный им код и вручную доработать его до идеала</td></tr></tbody></table></div><br>мешает, мешает<br>см. выше</font></td>
</tr>
</tbody></table>
<br> <table summary="table230" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 10.12.2008, 17:23</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>J0ker</b>, здравый
смысл подсказывает что кодогенератор твоего компилятора тоже люди
писали, написать менее универсальный но более эффективный не проблема</font></td>
</tr>
</tbody></table>
<br> <table summary="table231" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: mes</b> 10.12.2008, 17:23</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table232" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;10.12.2008,&nbsp;&nbsp;17:17&nbsp;<a href="http://forum.vingrad.ru/findpost-1722336.html" onclick="return getPost(1722336);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1722336);"></a>)</td></tr><tr><td class="quote">а
всетаки программирование на асме ничуть не медленнее программирования
на С++, даже быстрее с учетом времени создания нового проекта и
компиляции. опять же на .ехешку в 1кб смотреть приятно</td></tr></tbody></table></div><br>если
программа для&nbsp;&nbsp;решения мелкой задачи то трудно оценить.. А
вот например составить браузер или тот же самый компилятор ? думаю мало
кто из программистов отважится затеять такой проект на асме ,
хотя&nbsp;"герои"&nbsp;безусловно есть )</font></td>
</tr>
</tbody></table>
<br> <table summary="table233" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: J0ker</b> 10.12.2008, 17:24</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"></font><div class="postcolor"><table class="quote" summary="table234" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;10.12.2008,&nbsp;&nbsp;17:17&nbsp;<a href="http://forum.vingrad.ru/findpost-1722336.html" onclick="return getPost(1722336);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1722336);"></a>)</td></tr><tr><td class="quote">а
всетаки программирование на асме ничуть не медленнее программирования
на С++, даже быстрее с учетом времени создания нового проекта и
компиляции</td></tr></tbody></table></div><font color="#000000" size="3" face="arial"><br>издеваешься, да?&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile">&nbsp;<br></font></td>
</tr>
</tbody></table>
<br> <table summary="table235" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: mes</b> 10.12.2008, 17:28</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table236" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;10.12.2008,&nbsp;&nbsp;17:23&nbsp;<a href="http://forum.vingrad.ru/findpost-1722342.html" onclick="return getPost(1722342);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1722342);"></a>)</td></tr><tr><td class="quote">написать менее универсальный но более эффективный не проблема&nbsp;</td></tr></tbody></table></div><br>Да
существует куча компиляторов, некоторые заточны под универсальность,
другие под конкретную архитектуру и можно выбрать тот, который больше
подходит&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/smile.gif" src="l2client_internal_hooks_files/smile.gif" alt="smile">&nbsp;</font></td>
</tr>
</tbody></table>
<br> <table summary="table237" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: J0ker</b> 10.12.2008, 17:30</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"></font><div class="postcolor"><table class="quote" summary="table238" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;10.12.2008,&nbsp;&nbsp;17:23)</td></tr><tr><td class="quote"><b>J0ker</b>, здравый смысл подсказывает что кодогенератор твоего компилятора тоже люди писали</td></tr></tbody></table></div><font color="#000000" size="3" face="arial"><br>только не в пример нам лучше знающие особенности процессоров - это во-первых<br>во-вторых,
логика распараллеливания настолько сложна, что даже люди из во-первых
не в состоянии оптимизировать более-менее сложный код - они для этого
написали умную программу, которая это делает - она называется компилятор<br><br><b>Добавлено через 1 минуту и 18 секунд</b><br></font><div class="postcolor"><table class="quote" summary="table239" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;10.12.2008,&nbsp;&nbsp;17:23&nbsp;<a href="http://forum.vingrad.ru/findpost-1722342.html" onclick="return getPost(1722342);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1722342);"></a>)</td></tr><tr><td class="quote">написать менее универсальный но более эффективный не проблема&nbsp;</td></tr></tbody></table></div><font color="#000000" size="3" face="arial"><br>с первым согласен<br>со вторым нет - для более-менее сложного кода - см.выше<br><br><b>Добавлено через 9 минут и 18 секунд</b><br>я много раз сталкивался с подобными спорами<br>и
если лет 10 назад еще можно было показать, что программа, написанная на
ассемблере более производительна, то как только появились многоядерные
процессоры, это стало практически невозможно - разборы полетов
показали, что компилятор может раскидать инструкции так, что они хорошо
параллелятся - при этом логика оказывается настолько сложна, что ни
один человек не в состоянии такое написать, а якобы бессмысленные с
т.з. человека операции (например замена одного оператора парой других,
выполняющихся заведомо медленней) приводит к повышению
производительности - что обусловлено опять-таки распараллеливанием<br></font></td>
</tr>
</tbody></table>
<br> <table summary="table240" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 10.12.2008, 17:47</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table241" cellspacing="0"><tbody><tr><td><b>Цитата</b></td></tr><tr><td class="quote"><br>я много раз сталкивался с подобными спорами<br>и
если лет 10 назад еще можно было показать, что программа, написанная на
ассемблере более производительна, то как только появились многоядерные
процессоры, это стало практически невозможно - разборы полетов
показали, что компилятор может раскидать инструкции так, что они хорошо
параллелятся - при этом логика оказывается настолько сложна, что ни
один человек не в состоянии такое написать, а якобы бессмысленные с
т.з. человека операции (например замена одного оператора парой других,
выполняющихся заведомо медленней) приводит к повышению
производительности - что обусловлено опять-таки распараллеливанием<br></td></tr></tbody></table></div><br>Ты имел ввиду конвеерные суперскалярные процессоры? А то применительно к мультиядерности ты написал хню&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/smile.gif" src="l2client_internal_hooks_files/smile.gif" alt="smile"></font></td>
</tr>
</tbody></table>
<br> <table summary="table242" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: J0ker</b> 10.12.2008, 19:50</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table243" cellspacing="0"><tbody><tr><td><b>Цитата</b>(Kallikanzarid&nbsp;@&nbsp;&nbsp;10.12.2008,&nbsp;&nbsp;17:47&nbsp;<a href="http://forum.vingrad.ru/findpost-1722378.html" onclick="return getPost(1722378);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1722378);"></a>)</td></tr><tr><td class="quote">Ты имел ввиду конвеерные суперскалярные процессоры? А то применительно к мультиядерности ты написал хню</td></tr></tbody></table></div><br>о мля, точно, переклинило&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/yes3.gif" src="l2client_internal_hooks_files/yes3.gif" alt="smile">&nbsp;</font></td>
</tr>
</tbody></table>
<br> <table summary="table244" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 10.12.2008, 20:10</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>J0ker</b>, береш
справочник Агнера Фога, и пишешь код не хуже того что генерит
компилятор. Компилятор хорош тем что избавляет от рутины за счет
неидеальной кодогенерации и отсутствия средств управления кодогенерацией<br>Может там и будет офигенное распараллеливание, но вот идиотские неоптимальности типа&nbsp;<br>push reg32 / fld dword [m32real] / fstp dword [esp]<br>вместо<br>push dword [m32real]<br>всеравно останутся</font></td>
</tr>
</tbody></table>
<br> <table summary="table245" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 10.12.2008, 20:15</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>GoldFinch</b>,
пользуясь случаем, еще раз предлагаю тебе второй раунд. Докажи, что
асм-код для FP или целочисленных вычислительных методов и правда
выполняется быстрее компилируемого. Все, что тебе нужно сделать - это
выбрать адекватный алгоритм и написать ее реализацию, которая работала
бы быстрее моей на С++.</font></td>
</tr>
</tbody></table>
<br> <table summary="table246" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 10.12.2008, 20:34</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>Kallikanzarid</b>, выложи свой бинарник я его оптимизирую и&nbsp;"мой"&nbsp;код будет работать быстрее.<br>Если
говорить о сравнении различных реализаций, то все упрется в то чье
программерское мастерство лучше, так я и на С++ напишу код быстрее
твоего ^^</font></td>
</tr>
</tbody></table>
<br> <table summary="table247" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: mes</b> 10.12.2008, 20:36</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table248" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;10.12.2008,&nbsp;&nbsp;20:34&nbsp;<a href="http://forum.vingrad.ru/findpost-1722503.html" onclick="return getPost(1722503);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1722503);"></a>)</td></tr><tr><td class="quote">так я и на С++ напишу код быстрее твоего</td></tr></tbody></table></div><br>заочно оценили ?&nbsp;&nbsp;чудеса&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/wizard.gif" src="l2client_internal_hooks_files/wizard.gif" alt="smile">&nbsp;</font></td>
</tr>
</tbody></table>
<br> <table summary="table249" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 10.12.2008, 20:41</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>mes</b>, ага, с доверительной вероятностью 95%</font></td>
</tr>
</tbody></table>
<br> <table summary="table250" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 10.12.2008, 20:41</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>GoldFinch</b>, нет
уж - назвался груздем - полезай в кузов. Либо чисто на ассемблере - ты
ведь его сторонник - либо чисто на С++. Во втором случае, ясное дело,
будут беспристрастные судьи, которые будут получать исходники и
батники, запускающие компилятор, и выдавать результаты;&nbsp;исходники
друг от друга будем хранить в тайне. В любом случае, я уже сутки жду от
тебя задачу.</font></td>
</tr>
</tbody></table>
<br> <table summary="table251" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 10.12.2008, 21:14</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>Kallikanzarid</b>, так мы что тестировать будем?&nbsp;"С++ vs асм"&nbsp;или&nbsp;"Kallikanzarid vs GoldFinch"?</font></td>
</tr>
</tbody></table>
<br> <table summary="table252" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 10.12.2008, 21:16</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">Давай второе.</font></td>
</tr>
</tbody></table>
<br> <table summary="table253" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 10.12.2008, 21:39</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">я тоже суп както не очень.<br><br>вобщем я завтра вечером те тестовый алгоритм и методику измерения напишу<br><br>десятая страничка однако....</font></td>
</tr>
</tbody></table>
<br> <table summary="table254" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: J0ker</b> 10.12.2008, 22:13</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table255" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;10.12.2008,&nbsp;&nbsp;20:10&nbsp;<a href="http://forum.vingrad.ru/findpost-1722493.html" onclick="return getPost(1722493);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1722493);"></a>)</td></tr><tr><td class="quote">J0ker, береш справочник Агнера Фога, и пишешь код не хуже того что генерит компилятор.</td></tr></tbody></table></div><br>yуууу<br>"береш справочник по шахматам и обыгрываеш Каспарова"&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile">&nbsp;<br><br><div class="postcolor"><table class="quote" summary="table256" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;10.12.2008,&nbsp;&nbsp;20:10&nbsp;<a href="http://forum.vingrad.ru/findpost-1722493.html" onclick="return getPost(1722493);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1722493);"></a>)</td></tr><tr><td class="quote">Компилятор хорош тем что избавляет от рутины за счет неидеальной кодогенерации и отсутствия средств управления кодогенерацией</td></tr></tbody></table></div><br>я вам уже показал, что&nbsp;"неидеальность"&nbsp;обычно вызвана непониманием - вы упорно игнорируете этот факт&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile">&nbsp;<br><br><div class="postcolor"><table class="quote" summary="table257" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;10.12.2008,&nbsp;&nbsp;20:10&nbsp;<a href="http://forum.vingrad.ru/findpost-1722493.html" onclick="return getPost(1722493);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1722493);"></a>)</td></tr><tr><td class="quote">Может там и будет офигенное распараллеливание, но вот идиотские неоптимальности типа&nbsp;<br>push reg32 / fld dword [m32real] / fstp dword [esp]<br>вместо<br>push dword [m32real]<br>всеравно останутся&nbsp;</td></tr></tbody></table></div><br>упрямство - достоинство сами знаете кого&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile">&nbsp;<br>я вам знаете что советую<br>напишите-ка
на ассемблере вычислительный модуль BIONIC'а и запустите - а мы
посмотрим, примет ли сервер
ваши&nbsp;"оптимизированные"&nbsp;вычисления&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile">&nbsp;</font></td>
</tr>
</tbody></table>
<br> <table summary="table258" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 11.12.2008, 21:13</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>Kallikanzarid</b>,
вобщем я подумал-подумал, даже на форуме поспрашивал на каком алгоритме
может загнуться С++ в отличие от асма, да только подходящего ответа не
получил, да и сам ничего толкового не придумал... Что попроще и 100%
сработает - неинтересно, а то что сложно&nbsp;&nbsp;- самому долго
писать. Пришлось придумать нормальную задачу, близкую к реальной.<br><br>Нужно написать функцию bool __stdcall Tick(float x);<br>Функция принимает на вход некореллированную последовательность равномерно распределенных вещественных чисел&nbsp;<i>Xi</i>, 0&lt;=<i>Xi</i>&lt;<i>A</i>&lt;=1<br>Для&nbsp;<i>i</i>&nbsp;от 0 до&nbsp;<i>N</i>-1 параметр распределения&nbsp;<i>A</i>&nbsp;равен 1, для чисел с i от&nbsp;<i>N</i>&nbsp;до 2*<i>N</i>-1 параметр распределения&nbsp;<i>A</i>&nbsp;равен 0.5<br>Функция должна возвращать 1 при&nbsp;<i>i</i>&lt;<i>N</i>+<i>D</i>&nbsp;и 0 при i&gt;=<i>N</i>+<i>D</i>, где&nbsp;<i>D</i>&nbsp;- задержка срабатывания функции.<br>Производительность функции оценивается произведением времени работы функции&nbsp;<i>T</i>&nbsp;за одну итерацию на задержку срабатывания функции&nbsp;<i>D</i>, либо суммой времени выполнения&nbsp;<i>D</i>&nbsp;итераций, это значение должно быть минимально.<br>Допускается не более 5% ложных срабатываний (возврата 0 при i&lt;<i>N</i>), причем&nbsp;<i>N</i>&gt;100, первые 100 тактов ложные срабатывания не считаются.<br><br>Код функции следует оформить в виде DLL и сделать эту функцию экспортируемой, имя не важно, импортировать будем по ординалу.<br>В DllMain() можно инициализировать переменные, выделить память и проч.<br><br>Программа тестирования, одна и та же для всех длл, будет загружать длл, вызывать эту функцию и замерять ее время исполнения.<br><br>Примерный код программы тестирования:<br></font><div class="postcolor"><table class="code" summary="table259" cellspacing="0"><tbody><tr><td><b>Код</b></td></tr><tr><td class="code"><script language="javascript" type="text/javascript">includeSyntax('cpp');</script><code id="cpp_MGZhZW"><br>int main()<br>{<br>//переменные<br>bool&nbsp;(__stdcall *Tick)(float x);&nbsp;//указатель на функцию<br><br>unsigned int RandSeed = GetTickCount();&nbsp;//ядро ГПСЧ<br>float x;&nbsp;//входное данное функции<br>bool y;&nbsp;//выходное данное функции<br>int i;&nbsp;//переменная цикла<br>int N=10000;&nbsp;//длительность этапов измерения<br><br>__int64 /*long long*/ Start;&nbsp;//счетчик тактов до вызова<br>__int64 /*long long*/ Fin;&nbsp;//счетчик тактов после вызова<br>int Latency=0;&nbsp;//искомая задержка срабатывания, в тактах<br><br>(FARPROC&nbsp;&amp;)&nbsp;Tick = GetProcAddressA(<br>&nbsp;&nbsp;&nbsp;&nbsp;LoadLibraryA("showdown.dll"), //имя длл можно брать и из командной строки<br>&nbsp;&nbsp;&nbsp;&nbsp;0x80000001 //функция с ординалом 1<br>&nbsp;&nbsp;&nbsp;&nbsp;);<br>//меняем приоритет процесса<br>SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS);<br><br>//начинаем 1й этап измерений - разгон функции<br>for&nbsp;(i=0;i&lt;100;i++)&nbsp;//первые 100 итераций<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;RandSeed = 134775813 * RandSeed + 1;&nbsp;//получаем новое число ГПСЧ<br>&nbsp;&nbsp;&nbsp;&nbsp;x=RandSeed/4294967295.0;&nbsp;//случайное число от 0&lt;=x&lt;1<br>&nbsp;&nbsp;&nbsp;&nbsp;(*Tick)(x);<br>};<br>//начинаем 2й этап измерений - отлов ложных срабатываний<br>for&nbsp;(i=0;i&lt;N-100;i++)&nbsp;//итерации от 100 до N<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;RandSeed = 134775813 * RandSeed + 1;&nbsp;//получаем новое число ГПСЧ<br>&nbsp;&nbsp;&nbsp;&nbsp;x=RandSeed/4294967295.0;&nbsp;//случайное число от 0&lt;=x&lt;1<br>&nbsp;&nbsp;&nbsp;&nbsp;y=(*Tick)(x);<br>&nbsp;&nbsp;&nbsp;&nbsp;if(0==y)return -1;&nbsp;//возврат ошибки - ложное срабатывание<br>};<br>//начинаем 3й этап измерений - замер производительности<br>for&nbsp;(i=0;i&lt;N;i++)&nbsp;//итерации от N до 2*N, или пока функция не сработает&nbsp;(вернет 0)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;RandSeed = 134775813 * RandSeed + 1;&nbsp;//получаем новое число ГПСЧ<br>&nbsp;&nbsp;&nbsp;&nbsp;x=(RandSeed/2)/4294967295.0;&nbsp;//случайное число от 0&lt;=x&lt;0.5<br>&nbsp;&nbsp;&nbsp;&nbsp;Sleep(1);&nbsp;//ждем следующего кванта времени<br>&nbsp;&nbsp;&nbsp;&nbsp;__asm {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cpuid //"чистим трубы"&nbsp;(U&amp;V pipes ;))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rdtsc //читаем счетчик тактов ЦПУ<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov dword ptr&nbsp;[Start],eax //сохраняем в переменную младший dword<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov dword ptr&nbsp;[Start+4],edx //сохраняем в переменную старший dword<br>&nbsp;&nbsp;&nbsp;&nbsp;};<br>&nbsp;&nbsp;&nbsp;&nbsp;y=(*Tick)(x);<br>&nbsp;&nbsp;&nbsp;&nbsp;__asm {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cpuid //"чистим трубы"&nbsp;(U&amp;V pipes ;))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rdtsc //читаем счетчик тактов ЦПУ<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov dword ptr&nbsp;[Fin],eax //сохраняем в переменную младший dword<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov dword ptr&nbsp;[Fin+4],edx //сохраняем в переменную старший dword<br>&nbsp;&nbsp;&nbsp;&nbsp;};<br>&nbsp;&nbsp;&nbsp;&nbsp;Latency = Latency +&nbsp;(Fin-Start);<br>&nbsp;&nbsp;&nbsp;&nbsp;if(0==y)<br>&nbsp;&nbsp;&nbsp;&nbsp;{ //функция сработала<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return Latency;&nbsp;//возврат времени задержки<br>&nbsp;&nbsp;&nbsp;&nbsp;};<br>};<br>return -2;&nbsp;//возврат ошибки - пропуск срабатывания<br>};<br>//Программа возвращает результат в системной переменной ERRORLEVEL&nbsp;(в тактах ЦПУ)<br></code></td></tr></tbody></table></div><script language="javascript" type="text/javascript">highlightSyntax('cpp_MGZhZW','cpp');</script><font color="#000000" size="3" face="arial"><br>Размер бинарника, используемой виртуальной памяти неограничен, но будем считать что прога будет работать на компе с 512-1Гб ОЗУ<br><br><br>Что-то может следует откорректировать, чтото уточнить, в целом думаю задача получилась неплохая =)</font></td>
</tr>
</tbody></table>
<br> <table summary="table260" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 11.12.2008, 21:50</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">Уточни парочку моментов:<br>1) Речь идет о нормальном распределении случайных чисел?<br>2)
Что именно должна делать функция? Как я понимаю, ее выходное значение
зависит от того, какой по счету раз ее вызвали и совершенно не зависит
от передаваемого аргумента? Или я неправильно понял?<br>3) Как функция получит значение N?</font></td>
</tr>
</tbody></table>
<br> <table summary="table261" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 11.12.2008, 22:22</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">1) о равномерном, но можно сделать и нормальным.&nbsp;</font><div class="postcolor"><table class="quote" summary="table262" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;11.12.2008,&nbsp;&nbsp;21:13&nbsp;<a href="http://forum.vingrad.ru/findpost-1723853.html" onclick="return getPost(1723853);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1723853);"></a>)</td></tr><tr><td class="quote">некореллированную последовательность равномерно распределенных вещественных чисел Xi</td></tr></tbody></table></div><font color="#000000" size="3" face="arial"><br>2) функция должна определить что параметры входной последовательности изменились и вместо 1 вернуть 0<br>например она должна вычислять матожидание или дисперсию<br>фактически ее выходное значение должно както зависеть от предидущих значений<br>Как
именно зависеть - решать тебе. Чтобы хранить эти значения можно
использовать глобальные переменные, массивы, буферы, что захочешь.<br>3) N и i ей знать не надо, только принимать входные числа Xi, както накапливать их и возвращать<br><br>Выглядит это так<br></font><div class="postcolor"><table class="code" summary="table263" cellspacing="0"><tbody><tr><td><b>Код</b></td></tr><tr><td class="code"><script language="javascript" type="text/javascript">includeSyntax('nocolor');</script><code id="nocolor_jU5MDc"><br>i&nbsp;&nbsp;&nbsp;N-5&nbsp;&nbsp;N-4&nbsp;&nbsp;N-3&nbsp;&nbsp;N-2&nbsp;&nbsp;N-1&nbsp;&nbsp;N&nbsp;&nbsp;&nbsp;&nbsp;N+1&nbsp;&nbsp;N+2&nbsp;&nbsp;N+3&nbsp;&nbsp;N+4&nbsp;&nbsp;N+5<br>A&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;0.5&nbsp;&nbsp;0.5&nbsp;&nbsp;0.5&nbsp;&nbsp;0.5&nbsp;&nbsp;0.5&nbsp;&nbsp;0.5<br>Xi&nbsp;&nbsp;0.9&nbsp;&nbsp;0.2&nbsp;&nbsp;0.6&nbsp;&nbsp;0.7&nbsp;&nbsp;0.1&nbsp;&nbsp;0.3&nbsp;&nbsp;0.4&nbsp;&nbsp;0.1&nbsp;&nbsp;0.2&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;0.1<br>y&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;?&nbsp;&nbsp;&nbsp;&nbsp;?&nbsp;&nbsp;&nbsp;&nbsp;?&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;---
D ---&gt;<br></code></td></tr></tbody></table></div><script language="javascript" type="text/javascript">highlightSyntax('nocolor_jU5MDc','nocolor');</script><font color="#000000" size="3" face="arial"><br></font></td>
</tr>
</tbody></table>
<br> <table summary="table264" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: J0ker</b> 11.12.2008, 22:31</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">что-то мне мнится, что производительность в данной задаче будет упираться в алгоритм, а не в то, на чем он написан&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile">&nbsp;</font></td>
</tr>
</tbody></table>
<br> <table summary="table265" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 11.12.2008, 22:33</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>J0ker</b>, ну Kallikanzarid же сказал что ему интереснее&nbsp;"Kallikanzarid vs GoldFinch"&nbsp;чем&nbsp;"С++ vs асм"...</font></td>
</tr>
</tbody></table>
<br> <table summary="table266" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: J0ker</b> 11.12.2008, 22:56</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">ну в таком случае мне
не ясно, зачем вы нивелировали задачу 5-ю процентами - ИМХО скорость и
качество определения параметра распределения должны входить в оценку
результата умственного онанизма оппонентов&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile">&nbsp;<br></font></td>
</tr>
</tbody></table>
<br> <table summary="table267" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 11.12.2008, 23:00</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>J0ker</b>, а как
тогда оценку рассчитывать? тем более что если не задавать Pлс, то
возможно будут решения с максимальным быстродействием и
принципом&nbsp;"угадал\неугадал"</font></td>
</tr>
</tbody></table>
<br> <table summary="table268" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: J0ker</b> 11.12.2008, 23:06</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table269" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;11.12.2008,&nbsp;&nbsp;23:00&nbsp;<a href="http://forum.vingrad.ru/findpost-1723977.html" onclick="return getPost(1723977);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1723977);"></a>)</td></tr><tr><td class="quote">J0ker, а как тогда оценку рассчитывать?</td></tr></tbody></table></div><br>ну так об этом надо и договариваться<br><br><div class="postcolor"><table class="quote" summary="table270" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;11.12.2008,&nbsp;&nbsp;23:00&nbsp;<a href="http://forum.vingrad.ru/findpost-1723977.html" onclick="return getPost(1723977);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1723977);"></a>)</td></tr><tr><td class="quote">тем
более что если не задавать Pлс, то возможно будут решения с
максимальным быстродействием и принципом&nbsp;"угадал\неугадал"&nbsp;</td></tr></tbody></table></div><br>да,
но качество тогда снизится вдвое, при этом в формуле должна участвовать
задержка D - в этом случае такой алгоритм станет заведомо проигрышным</font></td>
</tr>
</tbody></table>
<br> <table summary="table271" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 11.12.2008, 23:19</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>J0ker</b>, проще задать вероятность не менее 95% чем выдумывать сомнительные интегральные критерии</font></td>
</tr>
</tbody></table>
<br> <table summary="table272" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 12.12.2008, 07:30</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>GoldFinch</b>, лучше взять нормальное распределение. И использовать не самодельную эвристику, а boost::random.<br><br>А вообще задача очень интересная&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/good.gif" src="l2client_internal_hooks_files/good.gif" alt="smile">&nbsp;</font></td>
</tr>
</tbody></table>
<br> <table summary="table273" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 12.12.2008, 08:59</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>Kallikanzarid</b>, ок, а какие матожидания и дисперсии?<br>и по какому алгоритму нормальное распределение получать будем?</font></td>
</tr>
</tbody></table>
<br> <table summary="table274" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 12.12.2008, 12:29</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">Предлагаю матожидание - 0.70 и 0.25, а дисперсию - 0.3 и 0.15.<br>Для
гененрации предлагаю взять хорошо известную библиотеку boost::random
-&nbsp;http://www.boost.org/doc/libs/1_37_0/libs/random/index.html</font></td>
</tr>
</tbody></table>
<br> <table summary="table275" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 12.12.2008, 20:18</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"></font><div class="postcolor"><table class="quote" summary="table276" cellspacing="0"><tbody><tr><td><b>Цитата</b>(Kallikanzarid&nbsp;@&nbsp;&nbsp;12.12.2008,&nbsp;&nbsp;12:29&nbsp;<a href="http://forum.vingrad.ru/findpost-1724680.html" onclick="return getPost(1724680);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1724680);"></a>)</td></tr><tr><td class="quote">Предлагаю матожидание - 0.70 и 0.25, а дисперсию - 0.3 и 0.15.</td></tr></tbody></table></div><font color="#000000" size="3" face="arial"><br>мм.... а почему именно такие числа? выглядит это несколько неудобно:<br>http://spreadsheets.google.com/pub?key=pneb3GWHrZ5iTmapONJT2ew&amp;oid=1&amp;output=image<br><br>впрочем, чтобы и нет...<br><br>мне библиотека boost::random, но если она действительно удобная, можно и ее применить<br><br>вот
еще какое предложение... если учитывать что число итараций (N) до
момента изменения параметров распределения мало, то возникает соблазн
сделать в программе буфер чисел этак на 10000000 и писать всю входную
последовательность в него, не заботясь о том что буфер может
закончиться. Вот чтобы такого небыло, предлагаю считать N значительно
большим размера любого буфера.</font></td>
</tr>
</tbody></table>
<br> <table summary="table277" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 12.12.2008, 20:37</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">boost::random можешь
оценить сам - по ссылке есть туториал. А матожидания и дисперсии лучше
и правда сделать подальше друг от друга&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/yes3.gif" src="l2client_internal_hooks_files/yes3.gif" alt="smile"><br><br><b>Добавлено через 2 минуты и 53 секунды</b><br>Насчет N согласен, давай и правда сделаем его достаточно большим.</font></td>
</tr>
</tbody></table>
<br> <table summary="table278" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Ln78</b> 12.12.2008, 20:48</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table279" cellspacing="0"><tbody><tr><td><b>Цитата</b>(J0ker&nbsp;@&nbsp;&nbsp;11.12.2008,&nbsp;&nbsp;22:31&nbsp;<a href="http://forum.vingrad.ru/findpost-1723946.html" onclick="return getPost(1723946);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1723946);"></a>)</td></tr><tr><td class="quote">что-то мне мнится, что производительность в данной задаче будет упираться в алгоритм, а не в то, на чем он написан&nbsp;&nbsp;</td></tr></tbody></table></div><br><br><div class="postcolor"><table class="quote" summary="table280" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;11.12.2008,&nbsp;&nbsp;22:33&nbsp;<a href="http://forum.vingrad.ru/findpost-1723951.html" onclick="return getPost(1723951);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1723951);"></a>)</td></tr><tr><td class="quote">J0ker, ну Kallikanzarid же сказал что ему интереснее&nbsp;"Kallikanzarid vs GoldFinch"&nbsp;чем&nbsp;"С++ vs асм"...&nbsp;</td></tr></tbody></table></div><br><br>Давно на форум не заходил, тут такие бойкие новички появились.<br><br><b>GoldFinch</b>,
а почему ты сам задачу ставишь? Это всё равно, как если бы, например, я
предложил тебе такой вариант: давай я загадаю число, а потом с тобой
посоревнуемся, кто его отгадает за меньшее число попыток.&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/nea.gif" src="l2client_internal_hooks_files/nea.gif" alt="smile">&nbsp;Просите&nbsp;<b>J0ker'</b>а, чтобы он вам независимо от вас задачу поставил.</font></td>
</tr>
</tbody></table>
<br> <table summary="table281" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 12.12.2008, 21:11</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>Ln78</b>, если что, еще один раунд проведем. А вот судья, который будет принимать длл-ки и говорить результаты, нам не помешает.</font></td>
</tr>
</tbody></table>
<br> <table summary="table282" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: J0ker</b> 12.12.2008, 21:12</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><div class="postcolor"><table class="quote" summary="table283" cellspacing="0"><tbody><tr><td><b>Цитата</b>(Ln78&nbsp;@&nbsp;&nbsp;12.12.2008,&nbsp;&nbsp;20:48&nbsp;<a href="http://forum.vingrad.ru/findpost-1725199.html" onclick="return getPost(1725199);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1725199);"></a>)</td></tr><tr><td class="quote">Просите J0ker'а, чтобы он вам независимо от вас задачу поставил.&nbsp;</td></tr></tbody></table></div><br>не, спасибо<br>у меня нет специального математического образования&nbsp;&nbsp;<img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile">&nbsp;<br><br><div class="postcolor"><table class="quote" summary="table284" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch&nbsp;@&nbsp;&nbsp;12.12.2008,&nbsp;&nbsp;20:18&nbsp;<a href="http://forum.vingrad.ru/findpost-1725172.html" onclick="return getPost(1725172);"><img ilo-full-src="http://forum.vingrad.ru/style_images/%3C#IMG_DIR#%3E/findpost.gif" title="Найти цитируемый пост" alt="Найти цитируемый пост" src="l2client_internal_hooks_files/a.htm" onclick="return getPost(1725172);"></a>)</td></tr><tr><td class="quote">то возникает соблазн сделать в программе буфер чисел этак на 10000000 и писать всю входную последовательность в него</td></tr></tbody></table></div><br>какой в этом смысл, если допустимая задержка 5%<br>предлагаю
сделать расширяемый буфер, равный 10% от текущего i - ИМХО единственное
логичное решение - распределение-то заранее известно</font></td>
</tr>
</tbody></table>
<br> <table summary="table285" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: Kallikanzarid</b> 12.12.2008, 21:13</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial">GoldFinch, предлагаю также встроить в тестирующую программу опциональный индикатор прогресса.</font></td>
</tr>
</tbody></table>
<br> <table summary="table286" align="center" border="1" cellpadding="6" width="90%">
<tbody><tr>
<td bgcolor="#eeeeee"><font color="#000000" size="2" face="arial"><b>Автор: GoldFinch</b> 12.12.2008, 21:14</font></td>
</tr>
<tr>
<td><font color="#000000" size="3" face="arial"><b>Ln78</b>, а я вообще на этот форум не заходил, а тут зашел - а тут вот как интересно))))<br>Kallikanzarid
сам попросил чтобы я поставил задачу, я ее и поставил. Впринципе я не
против того чтобы задачу ставила 3я сторона, если конечно задача будет
интересная.<br><br>К слову для меня эта задача достаточно сложная, т.к. я уже успел благополучно забыть статистику (если было что забывать %))<br><br><b>Kallikanzarid</b>, да не вопрос, можно еще сразу сделать 100 запусков алгорима, циклом:<br>for(int nTests=0;&nbsp;nTests&lt;100;&nbsp;nTests++)<br>{<br>hDll=LoadLibrary("showdown.dll");<br>... //i-й тест<br>FreeLibrary(hDll);<br>};<br></font></td>
</tr>
</tbody></table>
<br> <center><font color="#000000" size="1" face="arial">Powered by Invision Power Board (http://www.invisionboard.com)<br>© Invision Power Services (http://www.invisionpower.com)</font></center></body></html>