1703 lines
249 KiB
HTML
1703 lines
249 KiB
HTML
<!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>Форум программистов > C/C++: Для новичков > <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 "stdafx.h"<br><br>__declspec(naked) int Foo(int arg)<br>{__asm{<br> _emit 0xCC<br> mov eax,[arg]<br> ret<br>}};<br><br>int _tmain(int argc, _TCHAR* argv[])<br>{<br> 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 /$ CC INT3<br>00401001 |. 8B45
|
||
08 MOV EAX,DWORD
|
||
PTR [EBP+8] ;<<<<< ebp
|
||
o_O<br>00401004 \. C3 RETN<br>00401005 CC INT3<br>...<br>0040100F CC INT3<br>00401010 /$ 6A 01 PUSH 1<br>00401012 |. E8 E9FFFFFF CALL cpp_asm_.00401000<br>00401017 |. 83C4 04 ADD ESP,4<br>0040101A \. C3 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>это баг или "фича"? о_О</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>, <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 <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/crazy.gif" src="l2client_internal_hooks_files/crazy.gif" alt="smile"> <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">хм. http://msdn.microsoft.com/en-us/library/4d12973a(VS.80).aspx про
|
||
аргументы ничего такого не сказано, однако упомянуто авто-отключение
|
||
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>, Если
|
||
бы ты писал под мобильники, то юзал бы явно не студию. Уменьшение
|
||
размера кода даже на килобайт абсолютно незаметно. Теоретик, блин <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>О да, я такой глупый, просто оторопь берет! <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/crazy.gif" src="l2client_internal_hooks_files/crazy.gif" alt="smile"> Не желаю экономить 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) ttt func(...) {__asm jmp $+5 __asm nop __asm push rva __asm call imp_core }<br><br>__declspec(naked) void imp_core(int rva)<br>//make import<br>{ __asm{<br> //_emit 0xCC<br> pop eax // =func+0x10<br> pop edx // =rva<br> add edx,[g_hCore] // = VA<br> push edx<br> sub edx,eax //=org_func-(func+0x10)<br> add edx,0x10-5 //=org_func-(func+5)<br> mov [eax-0x10+1],edx<br> 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">Боюсь даже представить <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="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">реализует "ленивые" импорты<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>Главное, чтобы босс был не в их числе <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile"> </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 @ 7.12.2008, 10:29 <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 @ 7.12.2008, 17:46 <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">перед асмом у тех ламеров, кто полезет с ИДА </td></tr></tbody></table></div><br>несколько противоречивое высказывание <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile"> </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 @ 7.12.2008, 19:34 <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">хотя могли бы это и сделать... не бином ньютона =\ </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>, хм... ну тогда стоило бы выдавать ошибку компиляции, или хотябы явно написать об этой "фиче" в документации %)</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 @ 7.12.2008, 19:45)</td></tr><tr><td class="quote"><b>J0ker</b>, хм... ну тогда стоило бы выдавать ошибку компиляции, или хотябы явно написать об этой "фиче" в документации %)</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">раз уж речь пошла о пользе <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) ;<br>void __thiscall FPlayerSceneNode::Render(FRenderInterface *);<br>__declspec(naked) void __stdcall Hook_FPlayerSceneNode_Render(FRenderInterface *) <br>{_asm{<br> push dword ptr [esp+4]//arg1<br> push ecx<br> push dword ptr [esp+4]//arg1<br> call FPlayerSceneNode::Render<br> call OnRenderHook<br> ret 4<br>}}<br><br>//hook #2<br>void __thiscall ALineagePlayerController::PlayerCalcView(class AActor *, class FVector *, class FRotator *);<br>__declspec(naked) void
|
||
__stdcall Hook_ALineagePlayerController_PlayerCalcView(class AActor *,
|
||
class FVector *, class FRotator *) <br>{_asm{<br> mov eax,dword ptr [esp+0xC]//arg3<br> mov eax,dword ptr [eax+4]//2nd field<br> mov dword ptr [g_Direction],eax<br> 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"> <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/offtopic.gif" src="l2client_internal_hooks_files/offtopic.gif" alt="smile"> в
|
||
упор не понимаю, почему не сделать делегацию средствами языка (cpp), a
|
||
нужно прибегать к низкоуровневым непереносимым средствам ... <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/wacko.gif" src="l2client_internal_hooks_files/wacko.gif" alt="smile"> <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 <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/crazy.gif" src="l2client_internal_hooks_files/crazy.gif" alt="smile"> <br>Пожалуйста,
|
||
скажи, что это профайлер показал, что необходимо вручную передавать
|
||
параметр через регистр. Или использовать глобальную переменную. Или
|
||
вручную расчитывать смещение поля в объекте (ничего, кстати, что это
|
||
нарушает инкапсуляцию?). Не говоря уже о том, что рекомендуется
|
||
передавать объекты по ссылкам, а не по указателям. Я начинаю боятся за
|
||
будущее Земли. <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">тьфу ты. неужели вместо
|
||
того, чтобы нормально описать ситуевину, мол "развешиваю хуки в
|
||
игрушке", надо было "выеживаться" в потугах самоутверждения?
|
||
этот вопрос риторический.<br><br>в данном случае избавляться от асма
|
||
imho особого смысла нет - тебе нужно сделать совершенно определенные
|
||
низкоуровневые трики, и если их пытаться переписать на С, получишь кучу
|
||
неоднозначностей и условностей, не говоря уже о том, что код получится,
|
||
скорее всего, гораздо менее "прозрачным".<br>так же как и нет
|
||
смысла вкрячивать в высокоуровневый код примитивную защиту извращаясь с
|
||
дефайнами и вставками - для снятия оной вовсе не обязательно, чтобы
|
||
механизм понимал любой "ламер" - достаточно одного немного
|
||
продвинутого заинтересованного человека.<br><br><b>mes</b>, <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">Чьорт, меня затроллил закомплексованный труъ-ассемблерщег <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/wacko.gif" src="l2client_internal_hooks_files/wacko.gif" alt="smile"> *ушел пить йад*</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 @ 7.12.2008, 18:26 <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 @ 8.12.2008, 11:40 <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">вы не учитываете того, что работа идет с готовым бинарным кодом. </td></tr></tbody></table></div><br>Вместо
|
||
того чтоб учитывать все возможные предположения, которых в
|
||
действительности может и не быть (так как в другом топике этого же
|
||
автора вроде (может и ошибаюсь) подразумевалось о том что исходники на
|
||
руках) лучше было бы если бы автор описал бы свою ситуацию. Без этого
|
||
будет имхо затруднительно ответить на вопрос:<br><div class="postcolor"><table class="quote" summary="table47" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch @ 8.12.2008, 00:46 <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>, "рекомендуется
|
||
передавать объекты по ссылкам, а не по указателям" я кнешно не
|
||
силен в С++, но какая между ними разница? о_О<br><br><b>dumb</b>, какая разница, для чего нужен код? хуки они и есть хуки... а использование ЯВУ вместо <i>такого</i> асма позволит значительно повысить читаемость:<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) void __stdcall Hook_ALineagePlayerController_PlayerCalcView(<br> class AActor *, class FVector *, class FRotator *Rotator) <br>{ <br> __asm enter 0,0<br> g_Direction=Rotator->Pitch<br> __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>ЗЫ:
|
||
а та "примитивная защита" не хуже, чем популярное криптование
|
||
символьных имен или импорты по хешам. К тому же ей гораздо удобнее
|
||
пользоваться, т.к. функции(методы) вызываются нормально, а не по
|
||
указателям.</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 @ 8.12.2008, 12:26)</td></tr><tr><td class="quote"><div class="postcolor"><table class="quote" summary="table52" cellspacing="0"><tbody><tr><td><b>Цитата</b>(Kallikanzarid @ 7.12.2008, 18:26 <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 используешь <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/crazy.gif" src="l2client_internal_hooks_files/crazy.gif" alt="smile"> Я имел ввиду настоящие мобильники, с низкими вычислительными мощностями.<br><br><b>Добавлено через 7 минут и 25 секунд</b><br><b>GoldFinch</b>,
|
||
ссылка на протяжении своей жизни гарантированно указывает на один и тот
|
||
же объект, то позволяет компилятору включить множество оптимизаций,
|
||
которые он (справедливо) боится применять к указателям.<br>http://www.tantalon.com/pete/cppopt/main.htm - устаревший ресурс, но многое все еще справедливо.<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 @ 8.12.2008, 17:09 <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 @ 8.12.2008, 13:09 <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">Защита дефайнами и вставками элементарно ломается с помощью препроцессора. </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>, Препроцессора С/С++. Прогоняешь через него файлы, и дефайны со вставками волшебным образом исчезают <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/smile.gif" src="l2client_internal_hooks_files/smile.gif" alt="smile"> <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 @ 8.12.2008, 17:31 <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 @ 8.12.2008, 17:31 <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>Не понял. Ломают обычно бинарник. Как ты его прогоняешь через препроцессор? <br></td></tr></tbody></table></div><br>Тогда я ничего не понимаю <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="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 @ 8.12.2008, 13:37 <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 @ 8.12.2008, 11:40 <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">так
|
||
же как и нет смысла вкрячивать в высокоуровневый код примитивную защиту
|
||
извращаясь с дефайнами и вставками - для снятия оной вовсе не
|
||
обязательно, чтобы механизм понимал любой "ламер" -
|
||
достаточно одного немного продвинутого заинтересованного человека.</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">Не, ну вы все-таки
|
||
объясните. На С и асме пишется прога. Я так понимаю с расчётом на то,
|
||
что её будет сложно взломать, ну или просто разобраться в ее коде в
|
||
дизассемблере. Всё это предполагает то, что у злоумышленника будет
|
||
бинарник, и не будет исходников. <br>Что тогда такое "дефайн" в исполняемом файле? <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 @ 8.12.2008, 13:48 <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">Не,
|
||
ну вы все-таки объясните. На С и асме пишется прога. Я так понимаю с
|
||
расчётом на то, что её будет сложно взломать, ну или просто разобраться
|
||
в ее коде в дизассемблере. </td></tr></tbody></table></div><br>по
|
||
контексту речь идет о некоторых программистах,
|
||
которые "портят" (с какой целью можно только предполагать)
|
||
исходный код : <br><div class="postcolor"><table class="quote" summary="table69" cellspacing="0"><tbody><tr><td><b>Цитата</b></td></tr><tr><td class="quote">так же как и нет смысла вкрячивать в высокоуровневый код примитивную защиту извращаясь с дефайнами </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) ;<br>#define IMPORT_THUNK //nothing<br><br>class ALineagePlayerController<br>{<br>public:<br> IMPORT_THUNK
|
||
void ALineagePlayerController::PlayerCalcView(class AActor *, class
|
||
FVector *, class FRotator *) RVA(0xF1EB)<br>};<br><br><br>__declspec(naked) void imp_engine()<br>//make import<br>{ __asm{<br> //_emit 0xCC<br> pop eax // =func+0x10<br> pop edx // =rva<br> add edx,[g_hEngine] // = VA<br> push edx<br> sub edx,eax //=org_func-(func+0x10)<br> add edx,0x10-5 //=org_func-(func+5)<br> mov [eax-0x10+1],edx<br> ret<br>}}<br>//==================== THUNCKS ===================================<br>#define IMPORT_THUNK __declspec(naked)<br>#define RVA(rva) {__asm jmp $+5 __asm nop __asm push rva __asm call imp_engine }<br>...<br> IMPORT_THUNK
|
||
void ALineagePlayerController::PlayerCalcView(class AActor *, class
|
||
FVector *, class FRotator *) 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 @ 8.12.2008, 14:10 <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й взгляд там будет немало возни с восстановлением импортов. и это
|
||
еще самый простейший вариант) </td></tr></tbody></table></div><br> <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/offtopic.gif" src="l2client_internal_hooks_files/offtopic.gif" alt="smile"> а
|
||
сколько возни автору коду с подержкой всей этой ..ммм.. защитой.
|
||
) интересно в чем прелесть такой овчинки и стоит ли она
|
||
выделки ?<br>только ради (мнимой) надежды что код не взломают
|
||
? В принципе могут и не взломать.. это если как в анекдоте
|
||
про неуловимого Джо... ;)</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">Короче мы <span style="color: silver;">(<b>GoldFinch</b>, <b>Kallikanzarid</b>, <b>mes</b> и я)</span> в этой теме - лебедь, рак и щука, и ёщё кто-то четвёртый <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/offtopic.gif" src="l2client_internal_hooks_files/offtopic.gif" alt="smile"> <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/dash1.gif" src="l2client_internal_hooks_files/dash1.gif" alt="smile"> </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->*met)() вместо obj->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 @ 8.12.2008, 14:35 <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->*met)() вместо obj->met()</td></tr></tbody></table></div><br>забываете о прокси-классах типа умного указателя. <br><br><div class="postcolor"><table class="quote" summary="table78" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch @ 8.12.2008, 14:35 <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">а такими приятно пользоваться в коде + их можно генерить скриптом </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 @ 8.12.2008, 14:55 <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 @ 8.12.2008, 16:25 <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] </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">Мне не кажется очевидным, что кроссплатформенный исходный код приводит к генерации "плохого" бинарного кода.</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>,
|
||
из-за "кроссплатформенности", в С(++) нет способа средствами языка
|
||
сгенерить некоторые x86-87 команды, например загрузку констант в
|
||
FPU. <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">Троллинг перерастает в холивар... <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile"> <br>1) Чем плохи заранее обсчитанные константы?<br>2) Паскаль - не кроссплатформенный? <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/crazy.gif" src="l2client_internal_hooks_files/crazy.gif" alt="smile"> Да что ви говогите!<br>3) Меня ты продавишь только цифрами, так как плевать я хотел на красоту бинарного кода <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/smile.gif" src="l2client_internal_hooks_files/smile.gif" alt="smile"> Хочу бенчмарк, в котором те или иные мат. расчеты выполняются сначала в С++, а потом - в асме.<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 @ 8.12.2008, 17:15 <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">из-за "кроссплатформенности", в С(++) нет способа средствами языка сгенерить некоторые 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 @ 8.12.2008, 17:15 <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>не существует "кода C++ для FPU"<br>качество кода, сгенерированного компилятором зависит от качества компилятора<br>оценка
|
||
качества оптимизированного кода неподготовленными субъектами обычно
|
||
неадекватна, т.к. понять что оптимально а что нет на уже 2-х
|
||
процессорных платформах способен только специалист<br><br>и вообще на 2-х последних страницах столько бреда, что ужасть <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile"> </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) цифры: <br> fldpi - 2байта<br> pi dt 3.14.... / fld [pi] - 10+6 байт<br>4) если бы ты видел код который те генерит твой компилятор, ты бы не говорил о "минимизации простоя конвеера"<br>какбэ вот такой код при конфигурации "релиз" - это реальность<br>.text:1000122F mov eax,
|
||
dword ptr [g_hEngine]<br>.text:10001234 mov dword
|
||
ptr [eax+56F5D8h], offset
|
||
Hook_ALineagePlayerController_PlayerCalcView(AActor *,FVector
|
||
*,FRotator *)<br>.text:1000123E mov ecx,
|
||
dword ptr [g_hEngine]<br>.text:10001244 mov dword
|
||
ptr [ecx+57B968h], offset loc_10001190<br>.text:1000124E mov edx,
|
||
dword ptr [g_hEngine]<br><br><br><b>J0ker</b>, ок, будет говорить исключительно о компиляторе MSVC. так вот у него кодогенератор - гуан*<br><br>насчет кода для FPU - вот так вот в MSVC передаются 32-разрядные значения float<br>.text:10001344 fld [esp+18h+arg_4]<br>.text:10001348 fstp [esp+18h+var_14]<br>.text:1000134C fld dword
|
||
ptr [eax+4]<br>.text:1000134F fstp [esp+18h+var_18]<br>.text:10001352 call 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 @ 8.12.2008, 20:05 <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 fld [esp+18h+arg_4]<br>.text:10001348 fstp [esp+18h+var_14]<br>.text:1000134C fld dword
|
||
ptr [eax+4]<br>.text:1000134F fstp [esp+18h+var_18]<br>.text:10001352 call 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->m80real->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 @ 8.12.2008, 20:46)</td></tr><tr><td class="quote"><b>J0ker</b>, и где же ты там преобразование увидел? я тольк увидел преобразование 32разряда->80рязрядов->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 @ 8.12.2008, 20:50 <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">других решений тут нет и быть не может </td></tr></tbody></table></div><br>а это не решение? о_О<br>pushd [esp+18h+arg_4]<br>pushd [eax+4]<br>call 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 @ 8.12.2008, 20:56 <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 [esp+18h+arg_4]<br>pushd [eax+4]</td></tr></tbody></table></div><br><br>битовое
|
||
представление floata равного n не не соответствует битовому
|
||
представлению этого числа в 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 @ 8.12.2008, 20:56)</td></tr><tr><td class="quote"><div class="postcolor"><table class="quote" summary="table104" cellspacing="0"><tbody><tr><td><b>Цитата</b>(J0ker @ 8.12.2008, 20:50 <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">других решений тут нет и быть не может </td></tr></tbody></table></div><br>а это не решение? о_О<br>pushd [esp+18h+arg_4]<br>pushd [eax+4]<br>call 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>команда <i>push [mem32]</i> копирует 4 байта по адресу mem32 в стек, и она не обращает внимания на "битовое представление" этих байт.<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 @ 8.12.2008, 21:21 <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 @ 8.12.2008, 21:21 <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 @ 8.12.2008, 21:21 <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 в стек, и она <b>не обращает внимания на "битовое представление" </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 <iostream><br><br>union convert<br>{<br> float f;<br> int i;<br>};<br><br>int main()<br>{<br> convert c;<br> c.i =5;<br> std::cout<<c.i<<std::endl;<br> ++c.f;<br> std::cout<<c.i<<std::endl;<br><br> system("pause");<br> 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>, <b>mes</b>, жжоте... какие громкие заявления) какая уверенность в правоте своих слов... вы не правы. <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 @ 8.12.2008, 21:39 <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 @ 8.12.2008, 21:39 <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 @ 8.12.2008, 21:39 <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="table117" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch @ 8.12.2008, 21:39 <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><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">так..... тут было потерто обкидывание оппонента какашками <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile"> </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 @ 8.12.2008, 21:39 <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 @ 8.12.2008, 21:20 <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 [esp+18h+arg_4]<br>pushd [eax+4]<br>call 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 <iostream><br><br>union convert<br>{<br> float f;<br> int i;<br>};<br><br>float mycast_int2float(int i) // преобразование без учета типа<br>{<br> convert c;<br> c.i = i;<br> return c.f;<br>}<br><br>void myfunc (float f)<br>{<br> std::cout<< "argument for myfunc = " << f << std::endl;<br>}<br><br>int main()<br>{<br>// передача аргумента с конвертацией типа<br> myfunc ('a'); // char<br> myfunc (int(5)); // int<br> myfunc (6); // int<br> myfunc (7.0); // double<br>// передача аргумента по битовому представлению<br> myfunc (mycast_int2float('a'));<br> myfunc (mycast_int2float(5));<br><br> system("pause");<br> 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 <windows.h><br>#pragma comment(linker,"/ENTRY:main")<br><br>int __stdcall Foo(float arg)<br>{<br> return arg == 8/7;<br>};<br><br>int Bar(float arg)<br>{__asm{<br> push dword ptr [arg]<br> call Foo<br>}};<br><br>void main()<br>{ <br> if ( Bar(8/7)) <br> MessageBoxA(0,"8//7==8//7","ok",0);<br> else<br> 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>в строчке "push dword ptr [arg]" float значение передается в стек через push а не через пару fld/fstp<br>что характерно прога выводит "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 @ 8.12.2008, 22:17 <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 <iostream><br><br>int __stdcall Foo(float arg)<br>{<br> return int(arg)+1;<br>};<br>int Bar( int arg)<br>{<br> Foo (arg); // вот вместо этого передайте параметр через стек )<br>};<br>int main()<br>{<br> std::cout << "Foo(5) = " << Bar(5)<<std::endl;<br><br> system("pause");<br> 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 и посмотреть результат ) </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) float foo(float x, float x1)<br>{<br> return x * x1;<br>00401650 fld dword ptr [esp+4] <br>00401654 fmul dword ptr [esp+8] <br>00401658 fstp dword ptr [esp+4] <br>0040165C fld dword ptr [esp+4] <br>}<br>00401660 ret <br><br>..............<br><br>__declspec(noinline) double foo1(double x, double x1)<br>{<br> return x * x1;<br>00401670 fld qword ptr [esp+4] <br>00401674 fmul qword ptr [esp+0Ch] <br>}<br>00401678 ret <br><br>..................<br><br>int _tmain(int argc, _TCHAR* argv[])<br>{<br>00401680 push ebp <br>00401681 mov ebp,esp <br>00401683 and esp,0FFFFFFC0h <br>00401686 push 0FFFFFFFFh <br>00401688 push 403A20h <br>0040168D mov eax,dword ptr fs:[00000000h] <br>00401693 push eax <br>00401694 sub esp,70h <br>00401697 mov eax,dword ptr ds:[00406018h] <br>0040169C xor eax,esp <br>0040169E mov dword ptr [esp+38h],eax <br>004016A2 push esi <br>004016A3 mov eax,dword ptr ds:[00406018h] <br>004016A8 xor eax,esp <br>004016AA push eax <br>004016AB lea eax,[esp+78h] <br>004016AF mov dword ptr fs:[00000000h],eax <br>004016B5 mov esi,dword ptr [ebp+0Ch] <br> float a = (float)atof(argv[1]);<br>004016B8 mov eax,dword ptr [esi+4] <br>004016BB push eax <br>004016BC call dword ptr ds:[00404108h] <br>004016C2 fstp dword ptr [esp+34h] <br> float b = (float)atof(argv[2]);<br>004016C6 mov ecx,dword ptr [esi+8] <br>004016C9 add esp,4 <br>004016CC push ecx <br>004016CD call dword ptr ds:[00404108h] <br> <br> float y = foo(a, b) * 4.7f;<br>004016D3 fstp dword ptr [esp+38h] <br>004016D7 fld dword ptr [esp+38h] <br>004016DB fstp dword ptr [esp] <br>004016DE push ecx <br>004016DF fld dword ptr [esp+38h] <br>004016E3 fstp dword ptr [esp] <br>004016E6 call 00401650 <br>004016EB fmul qword ptr ds:[00404650h] <br><br> double a1 = atof(argv[1]);<br>004016F1 mov edx,dword ptr [esi+4] <br>004016F4 push edx <br>004016F5 fstp dword ptr [esp+3Ch] <br>004016F9 call dword ptr ds:[00404108h] <br> double b1 = atof(argv[2]);<br>004016FF mov eax,dword ptr [esi+8] <br>00401702 fstp qword ptr [esp+40h] <br>00401706 add esp,0Ch <br>00401709 push eax <br>0040170A call dword ptr ds:[00404108h] <br><br> double y1 = foo1(a1, b1) * 4.7;<br>00401710 sub esp,0Ch <br>00401713 fstp qword ptr [esp+8] <br>00401717 fld qword ptr [esp+44h] <br>0040171B fstp qword ptr [esp] <br>0040171E call 00401670 <br>00401723 fmul qword ptr ds:[00404648h] <br>00401729 add esp,10h <br><br> return (int)(y + y1);<br>0040172C fadd dword ptr [esp+30h] <br>00401730 call 00403500 <br>}<br>00401735 mov ecx,dword ptr [esp+78h] <br>00401739 mov dword ptr fs:[00000000h],ecx <br>00401740 pop ecx <br>00401741 pop esi <br>00401742 mov ecx,dword ptr [esp+38h] <br>00401746 xor ecx,esp <br>00401748 call 00401F58 <br>0040174D mov esp,ebp <br>0040174F pop ebp <br>00401750 ret <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>, <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 fld [esp+18h+arg_4]<br>.text:10001348 fstp [esp+18h+var_14]<br>.text:1000134C fld dword
|
||
ptr [eax+4]<br>.text:1000134F fstp [esp+18h+var_18]<br>.text:10001352 call 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 <windows.h><br>#pragma comment(linker,"/ENTRY:main")<br><br>__declspec(noinline) int __stdcall Foo(double arg)<br>{<br> return arg == 8.0/7.0;<br>};<br> <br>__declspec(noinline) int __stdcall Bar(double arg)<br>{__asm{<br> push dword ptr [arg+4]<br> push dword ptr [arg]<br> call Foo<br>}};<br><br>void main()<br>{ <br> if ( Bar(8.0/7.0)) <br> MessageBoxA(0,"8/7==8/7","ok",0);<br> else<br> 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 fstp dword ptr [esp+4] <br>0040165C fld dword ptr [esp+4] <br>не смущают?<br>и вообще, как эта муть относится к теме?<br><br><br><b>mes</b>, медленно, вдумчиво, прочитайте еще раз этот код, и Вы поймете что Вы пишите не по теме.<br>.text:10001344 fld [esp+18h+arg_4]<br>.text:10001348 fstp [esp+18h+var_14]<br>.text:1000134C fld dword
|
||
ptr [eax+4]<br>.text:1000134F fstp [esp+18h+var_18]<br>.text:10001352 call 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 @ 8.12.2008, 22:39 <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>да я собстна не про этот код <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile"> <br>я его даже не читал<br><br></font><div class="postcolor"><table class="quote" summary="table136" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch @ 8.12.2008, 22:39 <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 fstp dword ptr [esp+4] <br>0040165C fld dword ptr [esp+4] <br>не смущают?</td></tr></tbody></table></div><font color="#000000" size="3" face="arial"><br>а вас смущает? а что вас смущает? <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile"> <br><br></font><div class="postcolor"><table class="quote" summary="table137" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch @ 8.12.2008, 22:39 <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>когда вы это поймете, дискуссия будет окончена <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile"> </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 push ecx <br>004016DF fld dword ptr [esp+38h] <br>004016E3 fstp dword ptr [esp] <br>004016E6 call 00401650 <br>заменяется на<br>push dword ptr [esp+38h] <br>call 00401650<br>и т.д. и т.п.<br><br>не верите? проверьте в ольке <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 @ 8.12.2008, 23:09 <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 fstp dword ptr [esp+4] <br>0040165C fld dword ptr [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>вы мысль улавливаете, да? <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 @ 8.12.2008, 23:09 <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 push ecx <br>004016DF fld dword ptr [esp+38h] <br>004016E3 fstp dword ptr [esp] <br>004016E6 call 00401650 <br>заменяется на<br>push dword ptr [esp+38h] <br>call 00401650<br>и т.д. и т.п.<br><br>не верите? проверьте в ольке </td></tr></tbody></table></div><font color="#000000" size="3" face="arial"><br>только если нет преобразования типов<br>ага <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile"> </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 @ 8.12.2008, 23:30 <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, а процессору это нужно доказать <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile"> </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 @ 8.12.2008, 23:36 <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 @ 8.12.2008, 23:36 <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 @ 8.12.2008, 23:36 <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, а процессору это нужно доказать </td></tr></tbody></table></div><br>что доказать????<br>004016DE push ecx ; sub esp,SizeOf(<b>dword</b>)<br>004016DF fld <b>dword</b> ptr [esp+38h] <br>004016E3 fstp <b>dword</b> ptr [esp] <br>004016E6 call 00401650 <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 в стандарте оказывается... проморгал <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 @ 8.12.2008, 23:53 <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 fld dword ptr [esp+38h] <br>004016E3 fstp dword ptr [esp] <br>004016E6 call 00401650 <br>float и dword это одно и то же, что тут доказывать процессору? </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 <cstdlib><br>#include <cmath><br>#include <iostream><br>using namespace std;<br><br>const float pi = static_cast<float>( M_PI );<br><br>float cosint( float a, float b, int N ) {<br> float sum = 0.0f;<br> float h = (b - a) / N;<br> for( float cur = a + h; cur < b; cur += h )<br> sum += cos( cur );<br> return ( sum + ( cos(a) + cos(b) ) * 0.5f ) * h;<br>}<br><br>int main() {<br> clock_t before = clock();<br> float result = cosint( 0.0f, 1000.0f * pi, 10000000 );<br> clock_t after = clock();<br> <br> cout << result << " -- " << (after
|
||
- before) /
|
||
1000.0 << " seconds." << 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 -o showdown.exe showdown.cpp<br><br>После этого прогнал через strip:<br>strip -s showdown.exe<br><br>Прикладываю экзешник. Удачи, чувак <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/crazy.gif" src="l2client_internal_hooks_files/crazy.gif" alt="smile"> </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 я вообще промолчу... <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> clock_t before = clock();<br> float sum = 0.0f;<br> float h = 1000.0f * pi / 10000000;<br> for( float cur = h; cur < 1000.0f * pi; cur += h )<br> sum += cos( cur );<br> result = ( sum + cos(1000.0f * pi) * 0.5f ) * h;<br> 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) Инлайн есть гут <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/smile.gif" src="l2client_internal_hooks_files/smile.gif" alt="smile"> Оптимизирующий
|
||
компилятор ведь должен оптимизировать, так? Но в любом случае я
|
||
сомневаюсь, что один дополнительный вызов бы сделал погоду.<br>5) Да, так и было задумано <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">Решение "в лоб", без 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 'win32a.inc'<br>include 'hll.inc'<br>format PE GUI 4.0<br>;=====================================================<br>section '.data' data readable writeable<br>;------------------------<br>IMPORTS KERNEL32.DLL, <ExitProcess,GetTickCount,Sleep>,\<br> USER32.DLL, <wsprintfA,MessageBoxA><br>;------------------------<br>m dd 100000000 ;8digits=32/4<br>gRealBuf: dt ?<br>gMsgBuf db 1024 dup ?<br>;=====================================================<br>section '.code' code readable executable<br>entry $<br>; float result = cosint( 0.0f, 1000.0f * pi, 10000000 );<br> GetTickCount()<br> push eax<br>;A=0<br>;B=1000.0f * pi<br> ;-----------------------------------------------------<br> jmp @f<br> b_pi dd 1e+3 ;b/pi<br> h_pi dd 1e-4 ;h/pi=(b/pi)/N<br> _0.5 dd 0.5<br>@@:<br> fldpi ;pi<br> fmul [h_pi] ;h<br><br> fldpi ;pi,h<br> fmul [b_pi] ;b,h<br> fcos ;cos(b),h<br> fmul [_0.5] ;sum,h<br><br> fld st1 ;cur,sum,h<br> mov ecx,10000000<br> dec ecx ;N-1<br>.loo: ;cur,sum,h<br> fld st0 ;cur,cur,sum,h<br> fcos ;cos(cur),cur,sum,h<br> faddp st2,st0 ;cur,sum',h<br> fadd st0,st2 ;cur',sum',h<br> loop .loo<br> fxch st2 ;h,sum,cur<br> fmul st0,st1 ;result<br> ;-----------------------------------------------------<br> GetTickCount()<br> pop edx<br> sub eax,edx<br> fimul [m]<br> fbstp tword [gRealBuf]<br> wsprintfA(gMsgBuf,"Result = %x.%08x, Time = %dms",[gRealBuf+4],[gRealBuf],eax)<br> MessageBoxA(0,gMsgBuf,"Result",0)<br> ExitProcess()<br>;=====================================================<br>section '.reloc' 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>и пусть <b>GoldFinch</b>, попробует угнаться <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile"> </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>, у него один проц, скажет, что ничего не заметил <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>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>Нет уж, теперь ты не отвертишься <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile"> Кстати, считается, что у 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() тоже плохая идея, я его юзал только чтобы получать результат в секундах, мерить производительность лучше <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, замерить и т.д., а все замеры
|
||
просуммировать <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>Допустим. И что? <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/dance3.gif" src="l2client_internal_hooks_files/dance3.gif" alt="smile"> <br><br>Предлагаю
|
||
начать новый раунд эпического противостояния. На этот раз проверим
|
||
работу с памятью, в частности, с массивами. Выбирай задачу <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 @ 9.12.2008, 20:19 <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">Ты хаил портируемый код и С++ вообще. </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 @ 9.12.2008, 20:12 <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>мыж уже вроде решили что гуан* не компилятор, а ваше понимание? <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile"> </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,
|
||
из-за "кроссплатформенности", в С(++) нет способа средствами языка
|
||
сгенерить некоторые x86-87 команды, например загрузку констант в
|
||
FPU. <br>Т.е. в некроссплатформенном паскале есть
|
||
оператор(функция) Pi который генерит fldpi, а в кроссплатформенном
|
||
С(++) оператора Pi() нет, и способа сгенерить fldpi (и другие
|
||
константы) тоже нет.<br>Впрочем код C++ для FPU местами ужасен %) Ни один нормальный программист такого бы не писал. <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 @ 8.12.2008, 20:05 <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 fld [esp+18h+arg_4]<br>.text:10001348 fstp [esp+18h+var_14]<br>.text:1000134C fld dword
|
||
ptr [eax+4]<br>.text:1000134F fstp [esp+18h+var_18]<br>.text:10001352 call 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 @ 9.12.2008, 20:31 <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>вы игнорируете мой вопрос? <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile"> <br><br><div class="postcolor"><table class="quote" summary="table185" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch @ 9.12.2008, 20:31 <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">Хочешь эпического противостояния? по размеру оптимизировать будем? </td></tr></tbody></table></div><br><br><b>Kallikanzarid</b>,
|
||
соглашайтесь - придумайте задачу, использующую как можно больше функций
|
||
CRT - printf например - пусть затрахается и заодно посоревнуется в
|
||
оптимизации на реальных программах <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile"> </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>, а что не по размеру? Там в компиляторе даже опция есть, "оптимизировать по размеру", в 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>, передергиваете, да? <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile"> аргУменты кончаются? <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile"> <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 - 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 @ 9.12.2008, 20:54 <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 мегабит - а я буду бороться с
|
||
лишними килобайтами экзешника? </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 @ 9.12.2008, 20:54)</td></tr><tr><td class="quote"><b>J0ker</b>,
|
||
да ну, зачем мне такие извращения? У меня 1 гиг памяти, полгига
|
||
видеопамяти, 2 мега кэш второго уровня, 150 гигов дискового
|
||
пространства и безлимитный интернет на 1 мегабит - а я буду бороться с
|
||
лишними килобайтами экзешника?</td></tr></tbody></table></div><br>так я предлагаю взять и задачу посложнее - чтоб функций из CRT было побольше задействовано<br>чел
|
||
же не понимает, что как только понадобится использовать что-то
|
||
посложней - то придется либо самому все ручками писать (пусть
|
||
затрахается), либо подключать ту-же CRT - а результат по размеру буде
|
||
стремиться к общему - может тогда въедет, что такое мазохизм <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 @ 9.12.2008, 20:55 <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>поменьше бы таких программистов... <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-стек чтобы так говорить? Или знаеш как его сделать? <br></td></tr></tbody></table></div><br>1) Я уже давно не видел ни одной <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 @ 9.12.2008, 21:16 <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>а зачем? у меня и флоповода-то нету <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile"> <br>зато есть стааааарый флеш-драйв купленный лет 5-6 назад размером 512 метров <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/blum3.gif" src="l2client_internal_hooks_files/blum3.gif" alt="smile"> <br>и,
|
||
если мне не изменяет память, размер даже 5-ти дюймового диска был 360кБ
|
||
в пору моей молодости (извините, перфокарты зацепил только чуть-чуть) -
|
||
так размер CRT все равно меньше значительно, а всю функциональность
|
||
иначе вам придется ручками писать и вы все равно придете к тому-же
|
||
размеру <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 @ 9.12.2008, 21:16 <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-стек чтобы так говорить? Или знаеш как его сделать? </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 @ 10.12.2008, 00:55 <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>поменьше бы таких программистов... </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 @ 10.12.2008, 01:16 <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">вы когданить <b>видели</b> например графическую ОС которая влезает на дискету?</td></tr></tbody></table></div><br>Ну я видел MenuetOS. Не знаю что с ним еще можно сделать кроме как "увидеть". </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 @ 9.12.2008, 21:22 <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">так новый раунд будет? Ты уже выбрал задачу? </td></tr></tbody></table></div><br>близкую
|
||
к реальной задачу значит... допустим так... надо разработать программу
|
||
для генерации SFX архивов, размер распаковщика определяется следующими
|
||
требованиями:<br>архивы хранятся в библиотеке архивов на хостинге с максимально доступным дисковым пространством 100Мб,<br>файлов примерно 500-550,<br>размер 1 файла в диапазоне от 10 до 350кБ, <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кб? Блин, будь мужчиной уже <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/nea.gif" src="l2client_internal_hooks_files/nea.gif" alt="smile"> </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">Слив засчитан <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/dance3.gif" src="l2client_internal_hooks_files/dance3.gif" alt="smile"> </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 @ 10.12.2008, 19:01 <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>это равносильно заявлению "компилятор пишет асмовский код лучше чем я" кстати</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 @ 10.12.2008, 15:01 <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,
|
||
так или иначе, каким бы производительным твой код не был, я всегда могу
|
||
извлечь код из твоего бинарника, оптимизировть и засунуть в свой. Там
|
||
всегда будет что оптимизировать, и я хз о каком соревновании тут может
|
||
идти речь. </td></tr></tbody></table></div><br>Да неблагодарное
|
||
это дело, сравнивать языки без ориентировки на определенную задачу. Так
|
||
же как например взять русский и английский. Имхо, у русского больше
|
||
форм и возможностей выражения<br>- но это его преимущество является недостатком, при техническом применение. Английский же в данном аспекте более удобен.<br><br>Также
|
||
cpp, c, asm разняться от абстрактности мысли к ее точному применению.
|
||
Да на асме можно заточить алгоритм под конкретную архитектуру ..
|
||
решенная эта же задача на си будет переносима, <br>а на cpp к тому
|
||
же даст гарантию проверки типов. Т.е отдаляясь от точности разъяснения
|
||
алгоритма конкретной машины, мы приходим к тому что машина (компилятор)
|
||
сама подгоняет и контролирует <br>код, а результативный код
|
||
удовлетворяет выдвинутым задачей требованиям (в одних случаях критичен
|
||
размер, в других скорость, в третьих безопасность кода и длительная
|
||
поддержа и расширение)<br><br>Тесты показывают что c/cpp не отстает от
|
||
асма по скорости. Да по размеру бинарника асм
|
||
выигрывает, зато проигрывает в ых сферах с человеческим
|
||
фактором.. <br>Ну а скорость и размер для "потребительских" задач уже давно перестали быть решающим требованиями..<br><br>Я
|
||
считаю что максимальный эффект можно добиться если правильно подобрать
|
||
инструмент/ы к текущей задаче (прокопать тунель под
|
||
Ла-Маншем лопатой конечно геройство, но задача трудновыполнимая и не
|
||
имеющая смысла), но также не надо забывать, что языки всего лишь
|
||
инструмент, и основное зависит от того насколько им хорошо умеет
|
||
пользоваться программист е<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 @ 10.12.2008, 15:44 <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>в конце концов компилятор ЯВУ -
|
||
инструмент и ничто не мешает взять автоматически сгенерированный им код
|
||
и вручную доработать его до идеала.</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 @ 10.12.2008, 16:37 <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>такой способ (если конечно ручная доводка необходимa) также присутствует в данной цитате :<br><br><div class="postcolor"><table class="quote" summary="table224" cellspacing="0"><tbody><tr><td><b>Цитата</b>(mes @ 10.12.2008, 15:44 <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> <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/smile.gif" src="l2client_internal_hooks_files/smile.gif" alt="smile"> <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 'win32a.inc'<br>include 'hll.inc'<br>format PE GUI 4.0<br>section 'AllInOne' code readable writeable executable<br>IMPORTS KERNEL32.DLL, <ExitProcess,GetLastError,FormatMessageA>,\<br> USER32.DLL, <SetWindowPos,FindWindowA,MessageBoxA><br> psMsg dd ?<br>entry $<br> FindWindowA("GcxPropertyPageSite.Window.1",0)<br> test eax,eax<br> jz .err<br> SetWindowPos(eax,HWND_TOPMOST,0,0,0,0,SWP_SHOWWINDOW+SWP_NOSIZE)<br> test eax,eax<br> jz .err<br> ExitProcess()<br>.err:<br> GetLastError()<br> FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER+FORMAT_MESSAGE_FROM_SYSTEM+FORMAT_MESSAGE_IGNORE_INSERTS,\<br> 0,eax,0,psMsg,0,0)<br> MessageBoxA(0,[psMsg],0,0)<br> 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 @ 10.12.2008, 15:44 <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 @ 10.12.2008, 16:37 <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 @ 10.12.2008, 17:17 <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>если
|
||
программа для решения мелкой задачи то трудно оценить.. А
|
||
вот например составить браузер или тот же самый компилятор ? думаю мало
|
||
кто из программистов отважится затеять такой проект на асме ,
|
||
хотя "герои" безусловно есть )</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 @ 10.12.2008, 17:17 <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>издеваешься, да? <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile"> <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 @ 10.12.2008, 17:23 <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">написать менее универсальный но более эффективный не проблема </td></tr></tbody></table></div><br>Да
|
||
существует куча компиляторов, некоторые заточны под универсальность,
|
||
другие под конкретную архитектуру и можно выбрать тот, который больше
|
||
подходит <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="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 @ 10.12.2008, 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 @ 10.12.2008, 17:23 <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">написать менее универсальный но более эффективный не проблема </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>Ты имел ввиду конвеерные суперскалярные процессоры? А то применительно к мультиядерности ты написал хню <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 @ 10.12.2008, 17:47 <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>о мля, точно, переклинило <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/yes3.gif" src="l2client_internal_hooks_files/yes3.gif" alt="smile"> </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>Может там и будет офигенное распараллеливание, но вот идиотские неоптимальности типа <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>, выложи свой бинарник я его оптимизирую и "мой" код будет работать быстрее.<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 @ 10.12.2008, 20:34 <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>заочно оценили ? чудеса <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/wizard.gif" src="l2client_internal_hooks_files/wizard.gif" alt="smile"> </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>, нет
|
||
уж - назвался груздем - полезай в кузов. Либо чисто на ассемблере - ты
|
||
ведь его сторонник - либо чисто на С++. Во втором случае, ясное дело,
|
||
будут беспристрастные судьи, которые будут получать исходники и
|
||
батники, запускающие компилятор, и выдавать результаты; исходники
|
||
друг от друга будем хранить в тайне. В любом случае, я уже сутки жду от
|
||
тебя задачу.</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>, так мы что тестировать будем? "С++ vs асм" или "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 @ 10.12.2008, 20:10 <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>"береш справочник по шахматам и обыгрываеш Каспарова" <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile"> <br><br><div class="postcolor"><table class="quote" summary="table256" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch @ 10.12.2008, 20:10 <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>я вам уже показал, что "неидеальность" обычно вызвана непониманием - вы упорно игнорируете этот факт <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile"> <br><br><div class="postcolor"><table class="quote" summary="table257" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch @ 10.12.2008, 20:10 <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">Может там и будет офигенное распараллеливание, но вот идиотские неоптимальности типа <br>push reg32 / fld dword [m32real] / fstp dword [esp]<br>вместо<br>push dword [m32real]<br>всеравно останутся </td></tr></tbody></table></div><br>упрямство - достоинство сами знаете кого <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile"> <br>я вам знаете что советую<br>напишите-ка
|
||
на ассемблере вычислительный модуль BIONIC'а и запустите - а мы
|
||
посмотрим, примет ли сервер
|
||
ваши "оптимизированные" вычисления <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile"> </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%
|
||
сработает - неинтересно, а то что сложно - самому долго
|
||
писать. Пришлось придумать нормальную задачу, близкую к реальной.<br><br>Нужно написать функцию bool __stdcall Tick(float x);<br>Функция принимает на вход некореллированную последовательность равномерно распределенных вещественных чисел <i>Xi</i>, 0<=<i>Xi</i><<i>A</i><=1<br>Для <i>i</i> от 0 до <i>N</i>-1 параметр распределения <i>A</i> равен 1, для чисел с i от <i>N</i> до 2*<i>N</i>-1 параметр распределения <i>A</i> равен 0.5<br>Функция должна возвращать 1 при <i>i</i><<i>N</i>+<i>D</i> и 0 при i>=<i>N</i>+<i>D</i>, где <i>D</i> - задержка срабатывания функции.<br>Производительность функции оценивается произведением времени работы функции <i>T</i> за одну итерацию на задержку срабатывания функции <i>D</i>, либо суммой времени выполнения <i>D</i> итераций, это значение должно быть минимально.<br>Допускается не более 5% ложных срабатываний (возврата 0 при i<<i>N</i>), причем <i>N</i>>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 (__stdcall *Tick)(float x); //указатель на функцию<br><br>unsigned int RandSeed = GetTickCount(); //ядро ГПСЧ<br>float x; //входное данное функции<br>bool y; //выходное данное функции<br>int i; //переменная цикла<br>int N=10000; //длительность этапов измерения<br><br>__int64 /*long long*/ Start; //счетчик тактов до вызова<br>__int64 /*long long*/ Fin; //счетчик тактов после вызова<br>int Latency=0; //искомая задержка срабатывания, в тактах<br><br>(FARPROC &) Tick = GetProcAddressA(<br> LoadLibraryA("showdown.dll"), //имя длл можно брать и из командной строки<br> 0x80000001 //функция с ординалом 1<br> );<br>//меняем приоритет процесса<br>SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS);<br><br>//начинаем 1й этап измерений - разгон функции<br>for (i=0;i<100;i++) //первые 100 итераций<br>{<br> RandSeed = 134775813 * RandSeed + 1; //получаем новое число ГПСЧ<br> x=RandSeed/4294967295.0; //случайное число от 0<=x<1<br> (*Tick)(x);<br>};<br>//начинаем 2й этап измерений - отлов ложных срабатываний<br>for (i=0;i<N-100;i++) //итерации от 100 до N<br>{<br> RandSeed = 134775813 * RandSeed + 1; //получаем новое число ГПСЧ<br> x=RandSeed/4294967295.0; //случайное число от 0<=x<1<br> y=(*Tick)(x);<br> if(0==y)return -1; //возврат ошибки - ложное срабатывание<br>};<br>//начинаем 3й этап измерений - замер производительности<br>for (i=0;i<N;i++) //итерации от N до 2*N, или пока функция не сработает (вернет 0)<br>{<br> RandSeed = 134775813 * RandSeed + 1; //получаем новое число ГПСЧ<br> x=(RandSeed/2)/4294967295.0; //случайное число от 0<=x<0.5<br> Sleep(1); //ждем следующего кванта времени<br> __asm {<br> cpuid //"чистим трубы" (U&V pipes ;))<br> rdtsc //читаем счетчик тактов ЦПУ<br> mov dword ptr [Start],eax //сохраняем в переменную младший dword<br> mov dword ptr [Start+4],edx //сохраняем в переменную старший dword<br> };<br> y=(*Tick)(x);<br> __asm {<br> cpuid //"чистим трубы" (U&V pipes ;))<br> rdtsc //читаем счетчик тактов ЦПУ<br> mov dword ptr [Fin],eax //сохраняем в переменную младший dword<br> mov dword ptr [Fin+4],edx //сохраняем в переменную старший dword<br> };<br> Latency = Latency + (Fin-Start);<br> if(0==y)<br> { //функция сработала<br> return Latency; //возврат времени задержки<br> };<br>};<br>return -2; //возврат ошибки - пропуск срабатывания<br>};<br>//Программа возвращает результат в системной переменной ERRORLEVEL (в тактах ЦПУ)<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) о равномерном, но можно сделать и нормальным. </font><div class="postcolor"><table class="quote" summary="table262" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch @ 11.12.2008, 21:13 <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 N-5 N-4 N-3 N-2 N-1 N N+1 N+2 N+3 N+4 N+5<br>A 1 1 1 1 1 0.5 0.5 0.5 0.5 0.5 0.5<br>Xi 0.9 0.2 0.6 0.7 0.1 0.3 0.4 0.1 0.2 0 0.1<br>y 1 1 1 1 1 1 ? ? ? 0 0<br> <---
|
||
D ---><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">что-то мне мнится, что производительность в данной задаче будет упираться в алгоритм, а не в то, на чем он написан <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile"> </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 же сказал что ему интереснее "Kallikanzarid vs GoldFinch" чем "С++ 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-ю процентами - ИМХО скорость и
|
||
качество определения параметра распределения должны входить в оценку
|
||
результата умственного онанизма оппонентов <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile"> <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лс, то
|
||
возможно будут решения с максимальным быстродействием и
|
||
принципом "угадал\неугадал"</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 @ 11.12.2008, 23:00 <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 @ 11.12.2008, 23:00 <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лс, то возможно будут решения с
|
||
максимальным быстродействием и принципом "угадал\неугадал" </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>А вообще задача очень интересная <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/good.gif" src="l2client_internal_hooks_files/good.gif" alt="smile"> </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
|
||
- 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 @ 12.12.2008, 12:29 <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&oid=1&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 можешь
|
||
оценить сам - по ссылке есть туториал. А матожидания и дисперсии лучше
|
||
и правда сделать подальше друг от друга <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 @ 11.12.2008, 22:31 <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">что-то мне мнится, что производительность в данной задаче будет упираться в алгоритм, а не в то, на чем он написан </td></tr></tbody></table></div><br><br><div class="postcolor"><table class="quote" summary="table280" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch @ 11.12.2008, 22:33 <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 же сказал что ему интереснее "Kallikanzarid vs GoldFinch" чем "С++ vs асм"... </td></tr></tbody></table></div><br><br>Давно на форум не заходил, тут такие бойкие новички появились.<br><br><b>GoldFinch</b>,
|
||
а почему ты сам задачу ставишь? Это всё равно, как если бы, например, я
|
||
предложил тебе такой вариант: давай я загадаю число, а потом с тобой
|
||
посоревнуемся, кто его отгадает за меньшее число попыток. <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/nea.gif" src="l2client_internal_hooks_files/nea.gif" alt="smile"> Просите <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 @ 12.12.2008, 20:48 <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'а, чтобы он вам независимо от вас задачу поставил. </td></tr></tbody></table></div><br>не, спасибо<br>у меня нет специального математического образования <img ilo-full-src="http://forum.vingrad.ru/html/emoticons/pack/biggrin.gif" src="l2client_internal_hooks_files/biggrin.gif" alt="smile"> <br><br><div class="postcolor"><table class="quote" summary="table284" cellspacing="0"><tbody><tr><td><b>Цитата</b>(GoldFinch @ 12.12.2008, 20:18 <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; nTests<100; 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> |