|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Victor Cheburkin 2:463/62 02 Jan 2003 12:28:17 To : Vasya Kruglov Subject : Re: kernel compiling -------------------------------------------------------------------------------- On Thu, 02 Jan 03 00:00:09 +0200, Vasya Kruglov wrote: AC>>>> Вот у меня icc под рукой нет - проверить не могу, но MSVC по AC>>>> этому коду int main () { int sum = 0; for (int i=0; i < 5; AC>>>> ++i){ for (int i=0; i < 15; ++i){ ++sum; } } return AC>>>> sum; } сгенерил вот это _main: 00401000 mov AC>>>> eax,4Bh 00401005 ret VK>>> Хм. Прошу прощения, но разве после завершения работы данного куска VK>>> кода sum не будет равно 15? Второй цикл выполнится 15 раз, по его VK>>> завершению sum=15; i=15 и происходит выход из внешнего цикла. Или VK>>> здесь опечатка и во внутреннем цикле используется переменная j? VN>> Какая разница? Первый приступ оптимизации выкинет любые действия над VN>> переменной sum по той причине, что их результат не используется. VN>> Последующие удалят сначала внутренний цикл, потом внешний, и в VN>> результате останется пустое тело функции. Какие там переменные - уже VN>> пофиг. VK> Представь, что данный код исполняется так, как он написан, т.е. VK> последовательно и без оптимизации каждый оператор выполняется так, как VK> описано в стандартах на С. Какой после его выполнения будет результат? Если VK> я правильно понимаю, то sum будет равно таки 15. Почему же различаются VK> результаты работы оптимиированного и неоптимизированного кода? VK> P.S. Или я плохо знаю С? Видимо плохо, поскольку этот пример во-первых не будет компилироваться компилятором _С_, но будет _С++_. Во вторых, в C++ sum будет равно 15*5=75=0x4b, что мы и видим... -- Victor Cheburkin VCW61, VC319-RIPE, VC1-UANIC --- tin/1.5.12-20020427 ("Sugar") (UNIX) (Linux/2.4.20-rc1 (i686)) * Origin: Powered by Linux (2:463/62@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/1093320d0ef1f.html, оценка из 5, голосов 10
|