Здравствуйте, Mystic Artifact, Вы писали:
MA> https://github.com/llvm-mirror/llvm/blob/master/lib/CodeGen/VirtRegMap.cpp#L435 MA> Смотрим код, и понимаем, что это просто нытье по поводу стиля, которое, в масштабе — ровным счетом ни на что не влияет. Если это ситуационно нужно — пожалуйста.
Я такое заверну. Потому что не надо выделываться, от этого одни проблемы.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Stanislav V. Zudin, Вы писали:
SVZ>Мы обфускатором не пользуемся
Я вживую видел людей которые так пишут просто из головы и искренне удивляются "а чо такого?"
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, rg45, Вы писали:
R>А не может случиться так, что "кулхацкерским" этот "заголовок" является только потому, что он не вписывается в твое исходное утверждение?
Нет. Этот for — выпендрёж на ровном месте, причём я не вижу тут никаких бенефитов кроме попытки "сэкономить строки", за которое давно полагается тапком.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, T4r4sB, Вы писали:
TB>Дааа, подумаешь, цикл через задницу написали, только из-за того, что какой-то идиот, обожравшийся тухлой рыбы, впихнул в СТЛ беззнаковые индексы.
У нас тут один <censored> воткнул когда то signed для LBA в протокол и обеспечил этим просто море гемора. А поскольку это случилось давно уже не исправить.
Вбыв бы!
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, wander, Вы писали:
W>И ты вообще второй человек в моей жизни, которого это *так* раздражает.
Можешь записать меня третьим. Я считаю это излишеством которого там быть не должно.
Все эти извраты, типа operator , можно использовать строго там где без них ну ваще никак и хорошенько комментировать.
Потому что это источник проблем.
W>Что характерно первый, как и ты, в C++ пришел из паскалеподобных языков.
Я пришёл из С а туда из asm
TB>>мамкины хацкеры продолжают заниматься мозговым онанизмом... W>Ты не забыл, что в приличном обществе находишься?
Это в КСВ то?
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Nuzhny, Вы писали:
N>2. OpenMP. Неожиданно, но Майкрософт в своём компиляторе поддерживает только очень старую версию 2.0, в ней индексы для for могут быть только знаковыми.
Это ж тупо баг.
N>3. Адресная арифметика вся знаковая, родной тип ptrdiff_t.
Вот только адреса беззнаковые.
N> То есть если я захочу сделать размеры картинки (ширину и высоту) сделать, например, size_t и ходить по изображению по байтам, то мне всё равно надо переходить к ptrdiff_t, чтобы компилятор не ругался.
ptrdiff_t для разницы между указателями.
std::ptrdiff_t is the signed integer type of the result of subtracting two pointers.
std::ptrdiff_t acts as the signed counterpart of std::size_t
N>4. Внезапно оказывается, что многие типы становятся знаковыми, хотя по логике они такими быть, на первый взгляд, не могут. Например, детектирую я пешеходов и авто на кадре. И их левая координата уходит в минус, если в кадре видна только часть автомобиля.
И по какой вдруг логике они тут знаковыми быть не могут?
N>5. Далее знаковые становятся удобнее, когда происходит преобразование в другие системы координат. В твоей экранной системе координаты только положительные, ты рисуешь график в декартовой и числа внезапно становятся отрицательными.
Это если с абстракциями не всё в порядке. Экран это всего лишь viewport, внутри которого ничего не бывает знаковым.
N>6. Даже яркость пикселя, которая чаще всего от 0 до 255 и представлена в uchar при манипуляциях с яркостью легко вылезает за пределы типа вверх и вниз
Опять промах по абстракциям.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Stanislav V. Zudin, Вы писали:
SVZ>В этом случае отрицательные значения используются для обозначения невалидных объектов (у нас это -1) и для каких-нибудь специальных констант.
Напомнило: "А если в поле day стоит 32 то в поле month будет лежать R компонента, а в поле Year G << 8 + B."
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Кстати, есть ли гуйные отладчики, умеющие при наведении показывать такое в заданных альтернативных форматах?
Классическая студия умела, хз как там сейчас в новомодной.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, PM, Вы писали:
PM>размера и позиции в файловых потоках.
За это лично готов проводить массовые расстрелы. Мне такие проектировщики крови попортили уже.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Marty, Вы писали:
PD>>А вот это да. Это непростительно. M>Нормально. Знак может показывать, откуда отсчитываем — от начала или конца. Какая разница, знаковый или беззнаковый?
Проследуйте к стенке!
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Теперь я уже не понял, о чем ты. Я лишь согласился с мнением PM, что 32 бита в файловом смещении никуда не годится.
Пофигу. За знаковые 64 бита я точно так же буду
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Evgeny.Panasyuk, Вы писали:
N>>z/Arch: N>>MIPS:
EP>О, интересно, не знал что где-то есть.
Но это паршивенькие реализации. Проблема в том, что в них, как и в x86, обработка исключений не вышла из каменного века и требует обязательного перехода в режим супервизора.
Из более-менее заметных архитектур только в RISC-V озаботились вопросом "как исключения, которые не нужно гонять на высокие уровни, обрабатывать без переключения", но это только последние лет 5 и пока нету доступных реализаций в железе. Но RISC-V принципиально не генерирует исключения на целочисленную арифметику, даже на деление на 0.
N>>Но в нормальных современных процессорах, даже если есть проверки на happy path, за счёт предсказания ветвлений оно в подавляющем большинстве случаев пролетает их сходу, не притормаживая.
EP>Ну это совсем не бесплатно — арифметика используется повсеместно, в таком варианте её предсказания займут приличный кусок таблицы предсказателя, тормозя всё остальное приложение. На небольших по размеру горячих циклах проблемы нет, но на развесистых итерациях будет проседание.
Подозреваю, что ты сильно преувеличиваешь проблемность этого вопроса. Если уж в AArch64, где собрали всю статистику прошлого опыта и в результате по сравнению с 32-биткой убрали условное выполнение команд их признаком — в пользу явных переходов, то затраты на эту предсказания совсем ничтожные.
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>>>Ты всё ещё предпочтёшь воротить нос от стандартной и лаконичной идиомы TB>>Я такую лаконичность сишную в гробу видал. TB>>Это говно, а не лаконичность. TB>>Лаконичность — это reverseFor (i: n-1 .. 0); EP>Видимо мы как-то по-разному понимаем слово "лаконичность": EP>
Тут надо было бы пример подправить — reverseFor(i: n..1) превращается, как минимум, в
i = n + 1; // зачем этот инкремент, когда сразу же идёт вычитание назад?while(i-->1) {
...
}
с традиционной опасностью получить неожиданный результат, если n было UINT_MAX (да, есть шанс и такой ситуации). (С постпроверкой такой проблемы нет, но это уже другая идиома.)
Кстати, gcc на такой цикл всё равно "обижается" расщеплением и переделкой условия:
При -O2:
_Z3fooj:
lea eax, 1[rdi] ; <-- i = n + 1
cmp eax, 1
jbe .L6 ; <-- фактически, если n<=0, но проверка знаковая
push rbx
mov ebx, edi
.L3:
mov edi, ebx ; <-- по сравнению с предыдущей командой как-то криво выглядит
call _Z3barj@PLT
sub ebx, 1
jne .L3 ; ой, он заменил i-->1 на --i>0. не понравились ему хаки.
pop rbx
ret
.L6:
ret
И только при -Og или -Os логика кода ближе к привычной:
_Z3fooj:
push rbx
inc edi
.L3:
cmp edi, 1
lea ebx, -1[rdi]
jbe .L1
mov edi, ebx
call _Z3barj@PLT
mov edi, ebx
jmp .L3
.L1:
pop rbx
ret
EP>Ну так и замечательно, но вот для обсуждаемого конкретного частного случая while(n--) отлично подходит. EP>И этот вариант нужно знать, даже если сам не используешь — чтобы моментально парсить сторонний код, где это таки используется. А раз всё равно знаешь — то почему бы не использовать самому?
Ну, например, потому что на 1 хоть как-то привычного к такой идиоме будет 10 тех, кто будет смотреть на неё как на новые ворота слишком уж она узкоспецифична.
. Ты ж разберись в предмете сначала, потом кидайся.
CC>за которое давно полагается тапком.
Ну и традиционное обилие аргументов. На вопрос "почему так нельзя делать" один отвечает: "потому что не пройдешь ревью", другой — "потому что за это можно получить тапком". Вас где так надрессировали, коллеги?