информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Spanning Tree Protocol: недокументированное применениеСетевые кракеры и правда о деле ЛевинаГде водятся OGRы
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Google заблокировала 2 с лишним... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Раньше был int, и указатель для выполнения логического... 09.03.05 19:55  Число просмотров: 2243
Автор: Ktirf <Æ Rusakov> Статус: Elderman
<"чистая" ссылка>
> Наверное всё же не совсем так. Во-первых, в изначальном Си
> я вообще не помню, что бы был как-то явно определён bool.
Раньше был int, и указатель для выполнения логического отрицания приводился к int.

> На практике проверка
> любого условия - это JMP куда-то. Нужем этот самый JMP или
> нет проверяется исходя из флагов.
Ты знаешь, многие условия до этапа трансляции в ассемблерный код могут просто не дожить.

> Видимо, сравнение с NULL это что-то вроде:
>
> CMP ptr, 0; здесь перед нулём
> ;при необходимости надо дописать
> ;dword ptr или что требуется -
> ;я так понимаю, что компилятор это решает
> ;ещё до компиляции и не суть важно, что там
> ;написано - NULL или "0"
> JE destination
Компилятор совершенно не обязан трактовать if (ptr) именно так.

> В случае же отрицания указателя должно быть так (по идее):
>
> NOT ptr
> CMP ptr, 0
> JNE destination
А вот совсем не факт, что по идее должно быть так. Хотя бы потому, что NOT ptr — это, извините, какое отрицание, логическое разве?

> Ну а как именно определён NULL - чёрт его знает. Скорее
> всего, как мне кажется, точно я не могу утверждать, - это
> решается ещё до построения экзешника исходя из соображений
> оптимизации. Это было бы самым рациональным.
Гы, это решается ещё до запуска компилятора, я тебе по секрету скажу :)

> Ну а в MSDN написано: NULL is the null-pointer value used
> with many pointer operations and functions. Это описание
> (от и до) именно для Си. Видимо, даже в мелкософте точно не
> могут сказать, как оно устроено :)
Вообще-то MS до недавнего времени был довольно слабым авторитетом в отношении C/C++. С учётом того, что приличный компилятор у них появился лишь в 21 веке.
<programming> Поиск 






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach