The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Оптимизация кода компилятором может привести к появлению про..., opennews (?), 30-Окт-13, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


222. "Оптимизация кода компилятором может привести к появлению про..."  +1 +/
Сообщение от pavlinux (ok), 31-Окт-13, 15:21 
>> что если вы полагаете "а, ничего страшного, вряд ли когда-нибудь эта
>> переменная станет неопределенной", то рано или поздно: a) это произойдет; б)
>> вы потратите уйму времени, чтобы найти причину.
> Именно так - при том уповать на то что не описано в
> стандарте и/или "а вроде работает же" чревато тем что однажды работать
> таки перестанет. При том в самом неожиданном месте.
> Достаточно вспомнить про абобу, memcpy и флеш, где странные люди зачем-то полагались
> на конкретное поведение memcpy() хотя в стандарте ничего не говорится как
> именно должен работать memcpy кроме того что он скопирует что попросили
> куда попросили.

Всё такие вумные. Если уж вдаваться в абсолютизм, то
НЕЛЬЗЯ ОБЕСПЕЧИТЬ КОРРЕКТНОСТЬ КОДА СРЕДСТВАМИ ЭТОГО ЖЕ ЯЗЫКА,
более того - даже СРЕДСТВАМИ ЭТОГО АЛФАВИТА.

Можно до усрачки проверять результат работы

if ( a > b )
   if ( a - b > 0 )
      if ( -b + a > 0 )
        if  ( asm("test" "a" "b") == 0 )
....

В каждой из выше описанных строк, нужно проверять корректность операций if, >, <, ==, -, +, ...,  
а затем проверить корректность проверки,... :)

То есть, нельзя на компьютере написать программу проверки кода, который будет работать на этом же компьютере!!!

Первым приближением к истине может быть чекер написанный на LISP/Ada/Scala под OpenVMS на Alpha или Itanium 2

Ответить | Правка | К родителю #174 | Наверх | Cообщить модератору

225. "Оптимизация кода компилятором может привести к появлению про..."  +/
Сообщение от Crazy Alex (ok), 31-Окт-13, 15:40 
Этот абсолютизм к реальной жизни ни малейшего отношения не имеет.
Ответить | Правка | Наверх | Cообщить модератору

259. "Оптимизация кода компилятором может привести к появлению про..."  +/
Сообщение от pavlinux (ok), 31-Окт-13, 17:43 
> Этот абсолютизм к реальной жизни ни малейшего отношения не имеет.

Нужно добавить к твоей реальной жизни.

В институтах, на мех.-мате МГУ, в МИФИ,... много работ по этой теме.  

Ответить | Правка | Наверх | Cообщить модератору

231. "Оптимизация кода компилятором может привести к появлению..."  +/
Сообщение от arisu (ok), 31-Окт-13, 15:51 
> То есть, нельзя на компьютере написать программу проверки кода, который будет работать
> на этом же компьютере!!!

чушь. возможно, даже в случае, когда не гарантируется, что все «примитивы» работают корректно (хотя в этом случае, конечно, намного сложнее, чем если принять за данность корректное поведение «примитивов» — и да, есть граничные условия).

Ответить | Правка | К родителю #222 | Наверх | Cообщить модератору

261. "Оптимизация кода компилятором может привести к появлению..."  +/
Сообщение от pavlinux (ok), 31-Окт-13, 17:53 
>> То есть, нельзя на компьютере написать программу проверки кода, который будет работать
>> на этом же компьютере!!!
> чушь. возможно, даже в случае, когда не гарантируется, что все «примитивы» работают
> корректно (хотя в этом случае, конечно, намного сложнее, чем если принять
> за данность корректное поведение «примитивов» — и да, есть граничные условия).

Знаешь такую фичу, что корректность перевода на иностранный язык, с целью понимания, - есть обратный перевод. Ну или по нашему - дизассемблирование.
Вроде test eax, ebx  и cmp eax, ebx одно и тоже, но на разных наречиях...
Для понимания этих наречий и нужон "алфавит дизассемблера".
  

Ответить | Правка | Наверх | Cообщить модератору

262. "Оптимизация кода компилятором может привести к появлению..."  +1 +/
Сообщение от arisu (ok), 31-Окт-13, 17:58 
> Вроде test eax, ebx  и cmp eax, ebx одно и тоже, но на разных наречиях…

это для тех, кто язык плохо выучил. а для тех, кто хорошо выучил — «есть нюанс».

Ответить | Правка | Наверх | Cообщить модератору

272. "Оптимизация кода компилятором может привести к появлению..."  +/
Сообщение от pavlinux (ok), 01-Ноя-13, 01:55 
>> Вроде test eax, ebx  и cmp eax, ebx одно и тоже, но на разных наречиях…
> это для тех, кто язык плохо выучил. а для тех, кто хорошо
> выучил — «есть нюанс».

Этот нюанс зовётся компилятор, ибо на C ты напишешь  if ( x == 0 ), а компулятор
сделает как ему "нравиться"  иль test ax, ax или cmp ax, 0;
Не, ещё хуже - компилер скомпилит в двухбайтовую команду, скажем 0x0b12 или 0x0b10,
а чё там сделает процессор - хрен знает.  
Вот так незаметно и подошли к тому, что логическая бага (фича) в проце, влияет как
на работу проверяемого, так и проверяющего.
  

Ответить | Правка | Наверх | Cообщить модератору

276. "Оптимизация кода компилятором может привести к появлению..."  +/
Сообщение от arisu (ok), 01-Ноя-13, 06:09 
> Этот нюанс зовётся компилятор

нет, этот нюанс зовётся «процессор». test — это побитовый and, видишь ли, а cmp — это sub.

Ответить | Правка | Наверх | Cообщить модератору

316. "Оптимизация кода компилятором может привести к появлению..."  +/
Сообщение от pavlinux (ok), 02-Ноя-13, 02:14 
>> Этот нюанс зовётся компилятор
> нет, этот нюанс зовётся «процессор». test — это побитовый and, видишь ли,
> а cmp — это sub.

Ну вот и представь ституёвину, когда программа после команды test "ломается",
там же и ломается чекер. Другой язык использует для проверки той же ситуации cmp.

Ответить | Правка | Наверх | Cообщить модератору

326. "Оптимизация кода компилятором может привести к появлению..."  +/
Сообщение от arisu (ok), 02-Ноя-13, 11:03 
если предполагается, что примитивы могут косячить, то не поверишь — сначала проверяют примитивы.
Ответить | Правка | Наверх | Cообщить модератору

333. "Оптимизация кода компилятором может привести к появлению..."  +/
Сообщение от pavlinux (ok), 03-Ноя-13, 02:08 
> если предполагается, что примитивы могут косячить, то не поверишь — сначала проверяют
> примитивы.

Ну вот слава яйца, хоть народ до компилятора добрался и отловили описанные в новости баги.

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру