C++ chat 0. Простые вопросы, лабы и о IDE — в чат новичков @supapro 1. No Ads, offtop, flood 2. Полные правила тут https://t.me/ProCxx/259155 Объявления о вакансиях,эвентах - в лс @AlexFails или @MasterZiV канал вакансий https://t.me/ProCxxJobs
Какие санитайзеры можно использовать одновременно, чтобы за меньшее количество шагов проверить код? Вот так правильно будет:
1. address,leak
2. thread,undefined
да, без call_cast интереснее
заведите тикет, туда можно будет призвать пару мейнтейнеров x86 бэка. я смотрю, один из них был последний, кто вносил изменения в x86-64 psABI
cast же может быть вызван из другого ТУ, тут нельзя делать выводы по вызову с -1
Читать полностью…В исходном примере результат вызова cast будет разным: в одном случае есть sign-extend, в другом - нет
Читать полностью…caller не знает что будет дальше и вынужден делать это всегда. calle знает что он будет делать и может занулить, а может и не занулять. И думается, более чем в половине случаев это зануление никому не нужно: набор инструкций CPU позволяет работать с половинками (равными int), иначе int был бы 64-битный.
Читать полностью…ICC видимо исправили, как я выше написал, но вообще забавно такое читать конечно)
Читать полностью…может быть мусора или не может быть зависит от аби, там могло бы быть явно написано про обнуление/расширение при передаче каких-то мелких типов, типа char, но там такого нет)
Читать полностью…WinDbg. Проблема может быть ещё в том, что на виндовых компах обычно устанавливается вагон всякой малвари которая любит загружать свои DLL в чужих процессах и пускать там свои треды. Я однажды чуть не рехнулся так отлаживать, а потом список загруженных DLLок посмотрел и сразу всё понял.
Читать полностью…вопрос вроде не про это был, а про sys V cc, которое не гарантирует, что в верхней части регистра не будет мусора какого-то
Читать полностью…Стопроцентов, вначале до ширины слова расширять должно, потом к беззнаковому приводить. Иначе б в миллионе мест не работало, где ядерщики играются с масками, только случайно их кладут в int, а потом применяют в unsigned long. И оно работает только потому, что int делает знаковое расширение до long, а потом приводится к unsigned long и выполняется AND/OR/etc.
Читать полностью…В книжках по С++ )
Вектор вот так (только непонятно нафига):
auto ptr =new std::vector<...>;
даже нет, не в папку проекта, а по пути папка проекта/td/vcpkg
Читать полностью…@GammaGamespredstavitel, Ваш вопрос перемещён в чат @supapro. Там Вам с радостью помогут решить проблему :)
Читать полностью…Мой исходный вопрос - именно к "справедливо решил": кто ему позволил так решать?
SysV ABI явно не позволяет. Собственная кодогенерация - шаткий аргумент...
call_cast из примера можно убрать
все правы, в том числе оптимизатор кланга
в вашем примере он справедливо решил, что раз ваша константа -1 будет zero/sign extend во время генерации машинного кода, то можно обойтись простым mov
: https://gcc.godbolt.org/z/EY3hh3r18
а если его победить, то кланг делает то же самое, что и остальные: https://gcc.godbolt.org/z/dqanee9vG
(у этого ответа была длинная версия, которую я писал в процессе. там я выяснил, что sext
/zext
становится mov
после x86 instruction selection)
в целом не вижу особой разницы, кому-то всё равно придётся сделать это, либо callee, либо caller
Читать полностью…Это было бы слишком дорого, занулять всё подряд лишний раз, как мне кажется. Код который собирается интерпретировать int как long (а он же знает, что ему дали int) пусть и зануляет.
Читать полностью…Actual behaviour which is not (yet) documented in the standard:
Читать полностью…
Narrow function arguments, even _Bool/bool, are sign or zero-extended to 32 bits. clang even makes code that depends on this behaviour (since 2007, apparently). ICC17 doesn't do it, so ICC and clang are not ABI-compatible, even for C. Don't call clang-compiled functions from ICC-compiled code for the x86-64 SysV ABI, if any of the first 6 integer args are narrower than 32-bit.
Так clang делает mov из 32разрядного edi, icx и gcc — из 8разрядного dil.
Читать полностью…Но ведь там не требования int32 до int64 расширять. Значит может быть мусор.
Читать полностью…Это видимо потому, что результат толком никак не используется и функция не внешняя. И он знает что будет, потому и .
Читать полностью…Слушайте, а как будут вызываться ресиверы экзекуторов в случае когда операция завершается сразу по вызову start?
Читать полностью…функция и так в оперативной памяти находится, только в другой "секции"
Читать полностью…я пользовался предложенным build.html , который, по идее, должен рассказать как установить эту либу. но если посмотреть на предоставленный код, то , опять же, там просто идет установка vcpkg в папку проекта
Читать полностью…