Всё что не покрыто volatile... на усмотрение оптимизатора...
точка...
Ну, если Вам приятно жить в такой реальности - не смею противоречить - живите.
Я живу в реалиях... а не в сказках... У меня нет желания... писать компилятор для себя любимого... Поэтому мне проще знать недостатки компиляторов... чем с ними бороться... как с ветряными мельницами...
Человек может соптимизировать лучше любого шаблонного оптимизатора.
Ну, это-то козе понятно.
Другое дело, что поляна человека - оптимизировать смыслы, а выискивать неиспользуемые переменные, заранее просчитывать куски, которые можно просчитать на этапе компиляции, сводить несколько действий в одно - нехай этим компилятор занимается.
Например, я тут сейчас делал (ещё делаю) некий клеточный автомат на основе коннвеевской жизни в Хроме на яваскрпите. И Хром не ахти какая скоростная рисовалка и JS - тот ещё язычок, так я сделал "живые клетки" не яваскриптовским МАР'ом (или там SET'ом или массивом) а двусвязным списком, исключив таким образом операцию поиска "а есть ли уже в контейнере такой элемент" напрочь раз и навсегда - она просто не нужна. И выиграл раз в сто по производительности. Сколько бы я не экономил на спичках в пределах имеющихся структур структур данных - никогда бы такого не выжал и даже в десять раз бы не выдавил. Понятно, что никакой компилятор не способен за меня массивы на списки заменить.
Потому, что это Си - язык такой. И в этом языке глобальную переменную нельзя соптимизировать и выбросить - она обязана иметь своё место в памяти.
Именно в ОЗУ не должна, чтобы прибавить два плюс два, не обязательно эти цифры сохранять в ОЗУ, достаточно их записать их в R16 и R17 и выполнить команду ADD R16, R17. А если операнды сложения хранятся в ОЗУ, то один хер их надо переписать командой LS(LDS) в R16 и R17 и произвести сложение, неужели это не понятно?
Собсно как и в компьютере 86, команда выполняется ADD AX, BX и никакая оперативка не требуется, результат в аккумуляторе AX и делай дальше с ним что хочешь, можешь ниче не делать, но в озу по умолчанию нехер переписывать.
Так как компьютер выдумал человек, то описать задачу можно на человеческом языке:
Вышел я значит такой из подъезда, закурил...
Подходит человек "Ворота" с кошелкой яблок и говорит:
- Вот тебе в одну руку три яблока, в другую два яблока. Сколько в сумме яблок?
Я такой, - "Погодь". Беру лопату, выкапываю две ямки, зарываю в одну три яблока, в другую два.
Возвращаюсь и "спрашую" - "Что ты там спрашивал?"
Он говорит, "Да просто спросил сколько всего у тебя яблок?".
Я такой, - "А хули сразу не сказал?" Беру лопату, выкапываю яблоки, прислоняю ладони одну к другой и говорю: - "Пять!"
Дядя "Ворота" говорит "правильно", но смотрит как на дурачка, который снова идет эти яблоки закапывать.
И да, с оптимизацией -Os диалог выглядит так:
- "Сколько яблок в обеих руках?"
- "Пять, но я их один хер закопаю и не знаю почему". И снова дядя "Ворота" смотрит на меня как на дурачка, ведь программе то конец. Мне те яблоки нахер дальше не нужны, че я их закопал?
1. Вы в программе (в файле А) описали глобальную переменную
2. в проекте имеет право быть другой файл (B), в котором эта же переменная объявлена как extern и значит под неё не выделена память, а будет использоваться память Вашей переменной из файла А.
3. Поэтому компилятор при компиляции файла А ни при каких условиях не может не выделить физической памяти под Вашу переменную, т.к. он не знает и не может знать есть ли в проекте другие файлы, которые будут добираться до этой переменной через extern. Компилятор всегда работает с одним файлом и о других просто ничего не знает!
Ну, очевидно же, что они никак не может её выбросить. Ну выбросит он, а вдруг есть другой файл, где она нужна. И что тогда?
Простите, если Вам по-прежнему непонятно, просто примите это и не беспокойте меня больше.
Блин, идите Вы знаете куда! Впадло! Уж как могу говорю, но не понимаете же. Не знаю почему, может у Вас знаний не хватает, чтобы понять может я объяснять не умею - не знаю. Но не понимаете, Сколько и что ещё можно говорить!
Ну, неоткуда мля компилятору узнать, что эта переменная никому больше не нужна - неоткуда! А потому не может он её выбросить!
Простите, если Вам по-прежнему непонятно, просто примите это и не беспокойте меня больше.
Вы пишете с того света? Или читаете по диагонали?
Я спросил лиш, почему компилятор CVAVR для сложения двух чисел заносит эти числа в R4 и R5 и делает команду ADD R4, R5, в отличие от ваших преславутых компиляторов, которые для начала командами ST заносят их в память, а следующей строкой читает ее же из памяти в те же регистры R4 и R5 и в итоге, потратив до этого двенадцать команд выполняют абсолютно тоже, что и cvavr со старта?
Либо вы тугие, либо я уже не знаю как еще проще объяснить.
2. в проекте имеет право быть другой файл (B), в котором эта же переменная объявлена как extern и значит под неё не выделена память, а будет использоваться память Вашей переменной из файла А.
Нет в данном случае другого файла... вот оптимизатор и выкинул... имеет право... и правильно сделал...
Я спросил лиш, почему компилятор CVAVR для сложения двух чисел заносит эти числа в R4 и R5 и делает команду ADD R4, R5, в отличие от ваших преславутых компиляторов, которые для начала командами ST заносят их в память, а следующей строкой читает ее же из памяти в те же регистры R4 и R5 и в итоге, потратив до этого двенадцать команд выполняют абсолютно тоже, что и cvavr со старта?
Потому что кодэвижэн полунедопсевдо Си... он со своими тараканами... от которых мороз по коже...
Нет идеальных компиляторов... и не будет... И выбор компилятора...в нынешнем виде... только личные предпочтения и привычки... Ну или... отсутствие выбора... как в случае СТМ8...
Скорее всего во мне проблема. Давайте попрощаемся.
Ну да, скорее... проблема человека, который недавно в хекс кодах программу предоставлял и спрашивал почему она работает, а тут вдруг простые вещи отвергает, где mov это mov и ничто другое... до свидания.
полунедопсевдо Си... он со своими тараканами... от которых мороз по коже...
Тем не менее он выполнил свою задачу на пять с плюсом, всего пять однотактных команд по сравнению с двенадцатью, несколько которых далеко не однотактные.
Тем не менее он выполнил свою задачу на пять с плюсом
А ваще... компилятор... на тройку с минусом...
Вот кто действительно на пятёрочку тянул... так это С30 на ЖЦЦ под ПИК24... Там в большинстве случаев и придраться то не к чему... всё чётко и ничего лишнего... На АСМе можо писать как на Си... а на Си - как на АСМе... Это из-за архитектуры... хотя она и не без грешков...
Ну, неоткуда мля компилятору узнать, что эта переменная никому больше не нужна - неоткуда! А потому не может он её выбросить!
Серьёзно ??? Не хотите видеть очевидного ??? Печалька...
ssss! ты ж сейчас похож на первоклашку, который с учителем русского о запятых в сочинении спорит. То есть смешон, без обид. Евгений объясняет что именно требует от компилятора стандарт. Ты, как чистый практик, держишь в подкорке необходимость volatile, что тоже понятно.
Компилятор работает исключительно с ОДНИМ файлом. По стандарту. Случаи со странным поведением связана с LTO, когда оптимизатор проходится с метлой уже по всей пачке линкуемых модулей. Собственно я эти выкрутасы LTO в своей реплике и имел ввиду.
----------------------------
Второму оппоненту, Алксандру с подчеркиваниями:
Пойми простую вещь - см. выше. ПО СТАНДАРТУ компилятор не имеет права не отводить память под глобал. Если некий компилятор так делает - он не соответствует стандарту С/С++. Как бы он себя не называл, это компилятор с другого языка ;)). Более тебе ничего не говорят.
Женя по доброте попытался тебе объяснить причину возникновения этих требований в стандарте. В твоем случае это бесполезно, без обид.
ssss! ты ж сейчас похож на первоклашку, который с учителем русского о запятых в сочинении спорит. То есть смешон, без обид. Евгений объясняет что именно требует от компилятора стандарт.
Это его право... требовать... а толку ???
О каком стандарте мы говорим ??? Что сегодня осталось от первозданного Си ??? Да мало уже чего... Что мне с мнимого стандарта... если разные компиляторы дают на выходе разный результат ??? ))))))))))))
А ты компьютер сегодня выгулял? Содержать комп это тебе не яйца чесать! Этим заниматься надо! ;))))
Обновлять софт на старом не стал, даже не включал пару месяцев. И не апдейтил его железо причем давно, лет 8. Лимит на дибильные вопросы ты уже выбрал. Умные будут? Хотя кого я спрашую, распи..., который собственный вес в порядок привести не может.
-NMi- пишет:
wdrakula пишет:
Ысчо раз, я вешу 155 кг (примерно), у меня диабет 2, Ишемия (ИБС), ХОБЛ
Данунах. Датыгонишъ.
Каг гаварила мне моя подруга юности - сЭр, у вас зеркальная болезнь!!!
Ходячий труп о моих старых компах беспокоится. Цирк просто! У меня еще Орион-128 есть, о нем я тоже не забочусь, 25 лет как КМ-ки выкусил и продал))
Те отбой, можешь не отвечать. У тя забот в оставшейся недолгой много. И куда более серьезных чем асм и старые компы. Займись важным.
А вообще даже прикольно, что ты не понимаешь насколько жалок! Ты принципиальный бессребреник, штоле?
В доме программиста компы всегда и посчитать-то нельзя, потому как никогда не знаешь, какая часть из них рабочая! ;))
Попробую:
Стационарки:
1. кухня - столовая, вместо монитора - телек, на нем вечером сериалы скачанные смотрим. 16 гиг 4 ядра, Core i5.
2. Вот щаз за ним. Боевая машина в мастерской, 16Гиг, кор ай5, ссд, вот тут куча софта для программирования, осцилографов, логанализаторов, ИДЕ всякие - постоянно МС Коде, Нетбинс, QT криейтор, ну и любимая ардуинка ;)) и для СТМ32 всякое.
3. В кабинете - это любимый комп жены. Там 8 гигов, мать не помню, зато два монитора, думал себе - потом жене отдал.
4. Сервер с ТОР, привокси, апачем, видеокамерами (софт - Zoneminder). Там же рейд5 и файловая помойка и торренты.
---------------
Ноуты: сорян, я их считать не стану. Боевой 12Гиг, коре ай3 2 ядра 4 потока, ссд 240+хдд320(или 500?), Это ХП Элитбук (старый - ессно), который без отвертки разбирается - реально лучшие ноуты, ИМХО. Остальные по дому валяются типа - кто первый взял, того и тапки ;)).
======================================
Ну хорошо, комп делишь с сыном - ничего страшного, НО СЕРВЕР ГДЕ? Капсом - не крик, а искреннее удивление!
А Еще VPS-ки нужны свои, как без них? Вот VPN и прокси ты как строить будешь? IP6 туннель, если провайдер не дает.
==================================
Еще: 8 лет не апгрейдил - фигня полная. Ничего нового, кроме поколений процессора. По скорости и 10 летний комп от нового не отличается. Просто добиваешь РАМ до максималки (16 или 32 от матери зависит) и ставишь ССД приличный. Если чипсет позволяет - камень с Али побыстрее, только в случае если ядер больше. И стационарку и ноут, если это нормальный ноут со съемным процессором (ысчо раз - HP Elitbook, к примеру - не считайте рекламой!)
Мужики, спасибо, я получил ответ на свой вопрос :)
Как автор темы прошу ее закрыть
Не получил! Его не было в теме.
Для программирования МК - нужно. Если не ассемблер, то структуру памяти, команд, регистров... ну в целом это можно назвать асмом. Но не обязательно уметь кодить со всеми макросами и прочим из 80-х годов, но читать листинг - обязательно.
Для программирования высокого уровня, даже для тилипона на Андроиде - не нужно совсем, даже вредно иногда! (по типу - меньше знаешь - лучше спишь)! И уж точно не нужно для работы с изображениями, биг дата, нейросетями и вот этим всем. Там лучше о машинных кодах забыть навсегда, иначе рехнешься. Я до сих пор не верю, что нейросеть может работать! Просто потому, что представляю объем вычислений на модели. В моем представлении такое не может "взлететь", но летает и это приводит меня в восторг!
структуру памяти, команд, регистров... ну в целом это можно назвать асмом.
)))))))))
Точно !!! А всякую хрень и отсебятину - стандартом... )))))))))))))
Воскресенье... удалось !!! ))))))))))
Зачем ты так? Логик - просто дурак и обидчивый. Мы с ним нормально общались и вместе Архата мочили, пока Логик не высрался на компилятор, который ему якобы что-то сломал... с тех пор я враг ;))). С тобой мы никогда раньше не срались... вроде? "Асм" использовано символически, как эвфемизм к "низкоуровневым знаниям", и это там же и написано. В этом контексте "знания асма" и обсуждаются в этой ветке, нет?
Если переменная со "статик сторадж дюрешн" имеет инициализатор..., то... не может быть выкинута... и т.д.
Статик здесь не рассматривался... увы...
И про стандарты... первое что под руку попалось... С11...
Цитата:
C11 или ISO/IEC 9899:2011 (неофициально C1X) — стандарт для языка Си (ISO/IEC 9899:2011[1]), который заменил существующий стандарт C99. Официально о выпуске стандарта было объявлено 19 декабря 2011 года[2]. Эта версия стандарта большей частью стандартизирует возможности, существующие в распространённых современных компиляторах. Из-за плохой совместимости текущих реализаций C99 со стандартом C11 включает в себя больше выборочных возможностей для упрощения совместимости со стандартом ядра языка[3][4]. Действующий с 2018 года стандарт C18[en] (он же C17) фактически является уточнённым вариантом C11, исправляющим найденные в стандарте ошибки
Новая ревизия стандарта позволяет реализациям не поддерживать определённые части стандарта, включая те, которые раньше надо было поддерживать обязательно (в C99)
А ещё есть MISRA... Вот такие они... стандарты...
=======
А... и да...
Цитата:
не обязательно уметь кодить со всеми макросами и прочим из 80-х годов, но читать листинг - обязательно.
Для программирования высокого уровня, даже для тилипона на Андроиде - не нужно совсем, даже вредно иногда!
А Вы хоть читали, то, Вам дали? Тот самый пункт 6.7.1 ? Он начинается словами: "All variables which do not have dynamic storage duration, do not have thread storage duration, and are not local have static storage duration".
Так что глобальная переменная - всегда static storage duration. А именно она здесь и рассматривалась ... увы ...
Учите матчасть и хотя бы читайте то, что Вам дают.
Делать мне больше нечего... Я столько видел дерьма... в ваших стандартах...что даже нет желания спорить... Мало ли что... на заборе написано...
Ещё расскажите мне... что С18 под ПИКи просто обязан поддерживать стандартные функции... )))))))
=========
Евгений... без обид... можете считать меня троллем... жирным троллем... я бы сказал... даже очень жирным... Но тролль... по определению... тот кто в теме... и свободно владеет и оперирует нужной информацией... ;)
Я считаю Вас человеком, который не знает языка, не хочет знать, и кичится этим. А обиды - это Вы выдумали. Какие могут быть обиды? Вы же мне знать не запрещаете. А то, что сами ... так это Ваше дело, а не моё - не знайте, мне не жалко.
Мужики, Граф, Петрович, заканчивайте кормить тролля. Вы что, не знаете этого персонажа? Для него огромная радость вывести кого-то из себя, а если оппонент взбесился и начал его по матушке посылать - от этого эсэсовец просто кончает.
Ведь, что здесь происходит на самом деле? Невежество отстаивает своё право не дремучесть. Ну, оставьте вы ему это право - вы что против «демократии и прав человека»? В конце концов, ещё Марк Твен отмечал, что: «Право на глупость — одна из гарантий свободного развития личности», а Вы эту «личность» давите. Оставьте дураков в покое - они блаженны и счастливы.
Я ведь спросил совсем про другое. Но ребята в стиле первого канала набежали и сделали вопрос ваще другим, какие-то глобальные переменные и прочую ахинею.
Я ведь спросил совсем про другое. Но ребята в стиле первого канала набежали и сделали вопрос ваще другим, какие-то глобальные переменные и прочую ахинею.
Да кто ж теперь помнит... если ещё и помнит... что вы там спрашивали... )))))))))))
А так... если я правильно понял... ЖЦЦ тоже позволяет заталкивать значения в регистры минуя память... вот только... имхо... это плохая практика... и не от хорошей жизни...
Всё что не покрыто volatile... на усмотрение оптимизатора...
точка...
Ну, если Вам приятно жить в такой реальности - не смею противоречить - живите.
А вас тут вапще не стояло, форум не твой.
Последний стакан был явно лишний... )))))))
Всё что не покрыто volatile... на усмотрение оптимизатора...
точка...
Ну, если Вам приятно жить в такой реальности - не смею противоречить - живите.
Я живу в реалиях... а не в сказках... У меня нет желания... писать компилятор для себя любимого... Поэтому мне проще знать недостатки компиляторов... чем с ними бороться... как с ветряными мельницами...
Ты пикировку сначала читал?
Человек может соптимизировать лучше любого шаблонного оптимизатора.
Ну, это-то козе понятно.
Другое дело, что поляна человека - оптимизировать смыслы, а выискивать неиспользуемые переменные, заранее просчитывать куски, которые можно просчитать на этапе компиляции, сводить несколько действий в одно - нехай этим компилятор занимается.
Например, я тут сейчас делал (ещё делаю) некий клеточный автомат на основе коннвеевской жизни в Хроме на яваскрпите. И Хром не ахти какая скоростная рисовалка и JS - тот ещё язычок, так я сделал "живые клетки" не яваскриптовским МАР'ом (или там SET'ом или массивом) а двусвязным списком, исключив таким образом операцию поиска "а есть ли уже в контейнере такой элемент" напрочь раз и навсегда - она просто не нужна. И выиграл раз в сто по производительности. Сколько бы я не экономил на спичках в пределах имеющихся структур структур данных - никогда бы такого не выжал и даже в десять раз бы не выдавил. Понятно, что никакой компилятор не способен за меня массивы на списки заменить.
Пора бить STM-щиков и велосипедистов.
Пора бить STM-щиков и велосипедистов.
Поддерживаю.
Мы завтра с котом на дачу переежжяем, у нас щастье. :-)
Самоизолируемся до октября, ну вас нафик, с вашими оптимизаторами. :-)
Потому, что это Си - язык такой. И в этом языке глобальную переменную нельзя соптимизировать и выбросить - она обязана иметь своё место в памяти.
Именно в ОЗУ не должна, чтобы прибавить два плюс два, не обязательно эти цифры сохранять в ОЗУ, достаточно их записать их в R16 и R17 и выполнить команду ADD R16, R17. А если операнды сложения хранятся в ОЗУ, то один хер их надо переписать командой LS(LDS) в R16 и R17 и произвести сложение, неужели это не понятно?
Собсно как и в компьютере 86, команда выполняется ADD AX, BX и никакая оперативка не требуется, результат в аккумуляторе AX и делай дальше с ним что хочешь, можешь ниче не делать, но в озу по умолчанию нехер переписывать.
Так как компьютер выдумал человек, то описать задачу можно на человеческом языке:
чтобы прибавить два плюс два, не обязательно эти цифры сохранять в ОЗУ
Т.е. про extern Вы ничего не поняли? Жаль, но помочь не могу. Разбирайтесь. Вам жить.
extern то обычный си, который говорит что ваша переменная в жопе по такому адресу в таком-то файле... по теме ест что сказать?
Нет, больше нечего. Жаль, что Вы ничего не поняли, но подумайте, поймёте и будете знать.
Нет, больше нечего. Жаль, что Вы ничего не поняли, но подумайте, поймёте и будете знать.
Что я не понял?
Что я не понял?
Что пошли общие фразы... что сказать уже нечего... что отмазки закончились... ))))))))))))))
Но вы...
подумайте, поймёте и будете знать.
... ))))))))))))))))))))))))
Т.е. про extern Вы ничего не поняли?
static забыли упомянуть... а жаль... На нём тоже такие срачи раскрутить можно... ))))))))))
Что пошли общие фразы... что сказать уже нечего... что отмазки закончились... ))))))))))))))
Ну отмазки я бы не сказал, т.к. люди таки шарют, а вот в том, что впдало что-то сказать - согласен.
Что я не понял?
Вы не поняли, что
1. Вы в программе (в файле А) описали глобальную переменную
2. в проекте имеет право быть другой файл (B), в котором эта же переменная объявлена как extern и значит под неё не выделена память, а будет использоваться память Вашей переменной из файла А.
3. Поэтому компилятор при компиляции файла А ни при каких условиях не может не выделить физической памяти под Вашу переменную, т.к. он не знает и не может знать есть ли в проекте другие файлы, которые будут добираться до этой переменной через extern. Компилятор всегда работает с одним файлом и о других просто ничего не знает!
Ну, очевидно же, что они никак не может её выбросить. Ну выбросит он, а вдруг есть другой файл, где она нужна. И что тогда?
Простите, если Вам по-прежнему непонятно, просто примите это и не беспокойте меня больше.
Ну, неоткуда мля компилятору узнать, что эта переменная никому больше не нужна - неоткуда! А потому не может он её выбросить!
Вы не поняли, что
Простите, если Вам по-прежнему непонятно, просто примите это и не беспокойте меня больше.
Вы пишете с того света? Или читаете по диагонали?
Я спросил лиш, почему компилятор CVAVR для сложения двух чисел заносит эти числа в R4 и R5 и делает команду ADD R4, R5, в отличие от ваших преславутых компиляторов, которые для начала командами ST заносят их в память, а следующей строкой читает ее же из памяти в те же регистры R4 и R5 и в итоге, потратив до этого двенадцать команд выполняют абсолютно тоже, что и cvavr со старта?
Либо вы тугие, либо я уже не знаю как еще проще объяснить.
Либо вы тугие, либо я уже не знаю как еще проще объяснить.
Скорее всего во мне проблема. Давайте попрощаемся.
2. в проекте имеет право быть другой файл (B), в котором эта же переменная объявлена как extern и значит под неё не выделена память, а будет использоваться память Вашей переменной из файла А.
Нет в данном случае другого файла... вот оптимизатор и выкинул... имеет право... и правильно сделал...
Что тут непонятного ???
Я спросил лиш, почему компилятор CVAVR для сложения двух чисел заносит эти числа в R4 и R5 и делает команду ADD R4, R5, в отличие от ваших преславутых компиляторов, которые для начала командами ST заносят их в память, а следующей строкой читает ее же из памяти в те же регистры R4 и R5 и в итоге, потратив до этого двенадцать команд выполняют абсолютно тоже, что и cvavr со старта?
Потому что кодэвижэн полунедопсевдо Си... он со своими тараканами... от которых мороз по коже...
Нет идеальных компиляторов... и не будет... И выбор компилятора...в нынешнем виде... только личные предпочтения и привычки... Ну или... отсутствие выбора... как в случае СТМ8...
Скорее всего во мне проблема. Давайте попрощаемся.
Ну да, скорее... проблема человека, который недавно в хекс кодах программу предоставлял и спрашивал почему она работает, а тут вдруг простые вещи отвергает, где mov это mov и ничто другое... до свидания.
Ну, неоткуда мля компилятору узнать, что эта переменная никому больше не нужна - неоткуда! А потому не может он её выбросить!
Серьёзно ??? Не хотите видеть очевидного ??? Печалька...
полунедопсевдо Си... он со своими тараканами... от которых мороз по коже...
Тем не менее он выполнил свою задачу на пять с плюсом, всего пять однотактных команд по сравнению с двенадцатью, несколько которых далеко не однотактные.
Тем не менее он выполнил свою задачу на пять с плюсом
А ваще... компилятор... на тройку с минусом...
Вот кто действительно на пятёрочку тянул... так это С30 на ЖЦЦ под ПИК24... Там в большинстве случаев и придраться то не к чему... всё чётко и ничего лишнего... На АСМе можо писать как на Си... а на Си - как на АСМе... Это из-за архитектуры... хотя она и не без грешков...
Ну, неоткуда мля компилятору узнать, что эта переменная никому больше не нужна - неоткуда! А потому не может он её выбросить!
Серьёзно ??? Не хотите видеть очевидного ??? Печалька...
ssss! ты ж сейчас похож на первоклашку, который с учителем русского о запятых в сочинении спорит. То есть смешон, без обид. Евгений объясняет что именно требует от компилятора стандарт. Ты, как чистый практик, держишь в подкорке необходимость volatile, что тоже понятно.
Компилятор работает исключительно с ОДНИМ файлом. По стандарту. Случаи со странным поведением связана с LTO, когда оптимизатор проходится с метлой уже по всей пачке линкуемых модулей. Собственно я эти выкрутасы LTO в своей реплике и имел ввиду.
----------------------------
Второму оппоненту, Алксандру с подчеркиваниями:
Пойми простую вещь - см. выше. ПО СТАНДАРТУ компилятор не имеет права не отводить память под глобал. Если некий компилятор так делает - он не соответствует стандарту С/С++. Как бы он себя не называл, это компилятор с другого языка ;)). Более тебе ничего не говорят.
Женя по доброте попытался тебе объяснить причину возникновения этих требований в стандарте. В твоем случае это бесполезно, без обид.
ssss! ты ж сейчас похож на первоклашку, который с учителем русского о запятых в сочинении спорит. То есть смешон, без обид. Евгений объясняет что именно требует от компилятора стандарт.
Это его право... требовать... а толку ???
О каком стандарте мы говорим ??? Что сегодня осталось от первозданного Си ??? Да мало уже чего... Что мне с мнимого стандарта... если разные компиляторы дают на выходе разный результат ??? ))))))))))))
Спуститесь с небес... господа и товарищи...
ПО СТАНДАРТУ компилятор не имеет права не отводить память под глобал. Если некий компилятор так делает - он не соответствует стандарту С/С++.
А по стандарту... он имеет право нарушать порядок действий... типа code reordering ???
ПО СТАНДАРТУ компилятор не имеет права не отводить память под глобал. Если некий компилятор так делает - он не соответствует стандарту С/С++.
А по стандарту... он имеет право нарушать порядок действий... типа code reordering ???
Оставь ты его с его истерикой в покое. Видишь ссылку на стандарт и цитату. Нету. Зато капслук и болд есть.
По теме - ненужность знания асма громче всего доказывают не знающие его. Так что все тут ясно.
А ты компьютер сегодня выгулял? Содержать комп это тебе не яйца чесать! Этим заниматься надо! ;))))
А ты компьютер сегодня выгулял? Содержать комп это тебе не яйца чесать! Этим заниматься надо! ;))))
Обновлять софт на старом не стал, даже не включал пару месяцев. И не апдейтил его железо причем давно, лет 8. Лимит на дибильные вопросы ты уже выбрал. Умные будут? Хотя кого я спрашую, распи..., который собственный вес в порядок привести не может.
Ысчо раз, я вешу 155 кг (примерно), у меня диабет 2, Ишемия (ИБС), ХОБЛ
Данунах. Датыгонишъ.
Каг гаварила мне моя подруга юности - сЭр, у вас зеркальная болезнь!!!
Ходячий труп о моих старых компах беспокоится. Цирк просто! У меня еще Орион-128 есть, о нем я тоже не забочусь, 25 лет как КМ-ки выкусил и продал))
Те отбой, можешь не отвечать. У тя забот в оставшейся недолгой много. И куда более серьезных чем асм и старые компы. Займись важным.
Как видим ссылок на стандарт снова стоко же! 8))
Ходячий труп о моих старых компах беспокоится. Цирк просто! У меня еще Орион-128 есть, о нем я тоже не забочусь, 25 лет как КМ-ки выкусил и продал))
Те отбой, можешь не отвечать. У тя забот в оставшейся недолгой много. И куда более серьезных чем асм и старые компы. Займись важным.
Ну про советы сам знаешь? Повторю, штоп не забывал: Советы папке давай, если тебя мама с ним познакомила, ОК?
ну и картинко, для поднятия настроения!
Мужики, спасибо, я получил ответ на свой вопрос :)
Как автор темы прошу ее закрыть
Обновлять софт на старом не стал
А вообще даже прикольно, что ты не понимаешь насколько жалок! Ты принципиальный бессребреник, штоле?
В доме программиста компы всегда и посчитать-то нельзя, потому как никогда не знаешь, какая часть из них рабочая! ;))
Попробую:
Стационарки:
1. кухня - столовая, вместо монитора - телек, на нем вечером сериалы скачанные смотрим. 16 гиг 4 ядра, Core i5.
2. Вот щаз за ним. Боевая машина в мастерской, 16Гиг, кор ай5, ссд, вот тут куча софта для программирования, осцилографов, логанализаторов, ИДЕ всякие - постоянно МС Коде, Нетбинс, QT криейтор, ну и любимая ардуинка ;)) и для СТМ32 всякое.
3. В кабинете - это любимый комп жены. Там 8 гигов, мать не помню, зато два монитора, думал себе - потом жене отдал.
4. Сервер с ТОР, привокси, апачем, видеокамерами (софт - Zoneminder). Там же рейд5 и файловая помойка и торренты.
---------------
Ноуты: сорян, я их считать не стану. Боевой 12Гиг, коре ай3 2 ядра 4 потока, ссд 240+хдд320(или 500?), Это ХП Элитбук (старый - ессно), который без отвертки разбирается - реально лучшие ноуты, ИМХО. Остальные по дому валяются типа - кто первый взял, того и тапки ;)).
======================================
Ну хорошо, комп делишь с сыном - ничего страшного, НО СЕРВЕР ГДЕ? Капсом - не крик, а искреннее удивление!
А Еще VPS-ки нужны свои, как без них? Вот VPN и прокси ты как строить будешь? IP6 туннель, если провайдер не дает.
==================================
Еще: 8 лет не апгрейдил - фигня полная. Ничего нового, кроме поколений процессора. По скорости и 10 летний комп от нового не отличается. Просто добиваешь РАМ до максималки (16 или 32 от матери зависит) и ставишь ССД приличный. Если чипсет позволяет - камень с Али побыстрее, только в случае если ядер больше. И стационарку и ноут, если это нормальный ноут со съемным процессором (ысчо раз - HP Elitbook, к примеру - не считайте рекламой!)
Мужики, спасибо, я получил ответ на свой вопрос :)
Как автор темы прошу ее закрыть
Не получил! Его не было в теме.
Для программирования МК - нужно. Если не ассемблер, то структуру памяти, команд, регистров... ну в целом это можно назвать асмом. Но не обязательно уметь кодить со всеми макросами и прочим из 80-х годов, но читать листинг - обязательно.
Для программирования высокого уровня, даже для тилипона на Андроиде - не нужно совсем, даже вредно иногда! (по типу - меньше знаешь - лучше спишь)! И уж точно не нужно для работы с изображениями, биг дата, нейросетями и вот этим всем. Там лучше о машинных кодах забыть навсегда, иначе рехнешься. Я до сих пор не верю, что нейросеть может работать! Просто потому, что представляю объем вычислений на модели. В моем представлении такое не может "взлететь", но летает и это приводит меня в восторг!
структуру памяти, команд, регистров... ну в целом это можно назвать асмом.
)))))))))
Точно !!! А всякую хрень и отсебятину - стандартом... )))))))))))))
Воскресенье... удалось !!! ))))))))))
структуру памяти, команд, регистров... ну в целом это можно назвать асмом.
)))))))))
Точно !!! А всякую хрень и отсебятину - стандартом... )))))))))))))
Воскресенье... удалось !!! ))))))))))
Зачем ты так? Логик - просто дурак и обидчивый. Мы с ним нормально общались и вместе Архата мочили, пока Логик не высрался на компилятор, который ему якобы что-то сломал... с тех пор я враг ;))). С тобой мы никогда раньше не срались... вроде? "Асм" использовано символически, как эвфемизм к "низкоуровневым знаниям", и это там же и написано. В этом контексте "знания асма" и обсуждаются в этой ветке, нет?
По компилятору, специально тебе дам ссылку: п. 6.7.1 в том файле стандарта С++17, который указан в "песочнице".
Если переменная со "статик сторадж дюрешн" имеет инициализатор..., то... не может быть выкинута... и т.д.
В этом контексте "знания асма" и обсуждаются в этой ветке, нет?
Ничего личного... пардонь...
По компилятору, специально тебе дам ссылку: п. 6.7.1 в том файле стандарта С++17, который указан в "песочнице".
Если переменная со "статик сторадж дюрешн" имеет инициализатор..., то... не может быть выкинута... и т.д.
Статик здесь не рассматривался... увы...
И про стандарты... первое что под руку попалось... С11...
C11 или ISO/IEC 9899:2011 (неофициально C1X) — стандарт для языка Си (ISO/IEC 9899:2011[1]), который заменил существующий стандарт C99. Официально о выпуске стандарта было объявлено 19 декабря 2011 года[2]. Эта версия стандарта большей частью стандартизирует возможности, существующие в распространённых современных компиляторах. Из-за плохой совместимости текущих реализаций C99 со стандартом C11 включает в себя больше выборочных возможностей для упрощения совместимости со стандартом ядра языка[3][4]. Действующий с 2018 года стандарт C18[en] (он же C17) фактически является уточнённым вариантом C11, исправляющим найденные в стандарте ошибки
Новая ревизия стандарта позволяет реализациям не поддерживать определённые части стандарта, включая те, которые раньше надо было поддерживать обязательно (в C99)
А ещё есть MISRA... Вот такие они... стандарты...
=======
А... и да...
не обязательно уметь кодить со всеми макросами и прочим из 80-х годов, но читать листинг - обязательно.
Для программирования высокого уровня, даже для тилипона на Андроиде - не нужно совсем, даже вредно иногда!
Здесь... согласен полностью...
Статик здесь не рассматривался... увы...
А Вы хоть читали, то, Вам дали? Тот самый пункт 6.7.1 ? Он начинается словами: "All variables which do not have dynamic storage duration, do not have thread storage duration, and are not local have static storage duration".
Так что глобальная переменная - всегда static storage duration. А именно она здесь и рассматривалась ... увы ...
Учите матчасть и хотя бы читайте то, что Вам дают.
А Вы хоть читали, то, Вам дали?
Делать мне больше нечего... Я столько видел дерьма... в ваших стандартах...что даже нет желания спорить... Мало ли что... на заборе написано...
Ещё расскажите мне... что С18 под ПИКи просто обязан поддерживать стандартные функции... )))))))
=========
Евгений... без обид... можете считать меня троллем... жирным троллем... я бы сказал... даже очень жирным... Но тролль... по определению... тот кто в теме... и свободно владеет и оперирует нужной информацией... ;)
Я считаю Вас человеком
Провокация ??? Знакомо... не вы первый... )))))))))))
Для типа "знающих"... но ничего не умеющих... ))))))))))))))))
http://pic24.ru/doku.php/osa/articles/volatile_for_chainiks
Просвещайтесь... вам будет полезно... может когда и в жизни пригодится... ))))))))))
Мужики, Граф, Петрович, заканчивайте кормить тролля. Вы что, не знаете этого персонажа? Для него огромная радость вывести кого-то из себя, а если оппонент взбесился и начал его по матушке посылать - от этого эсэсовец просто кончает.
Ведь, что здесь происходит на самом деле? Невежество отстаивает своё право не дремучесть. Ну, оставьте вы ему это право - вы что против «демократии и прав человека»? В конце концов, ещё Марк Твен отмечал, что: «Право на глупость — одна из гарантий свободного развития личности», а Вы эту «личность» давите. Оставьте дураков в покое - они блаженны и счастливы.
значит нужен выходит )))
значит нужен выходит )))
Я ведь спросил совсем про другое. Но ребята в стиле первого канала набежали и сделали вопрос ваще другим, какие-то глобальные переменные и прочую ахинею.
Я ведь спросил совсем про другое. Но ребята в стиле первого канала набежали и сделали вопрос ваще другим, какие-то глобальные переменные и прочую ахинею.
Да кто ж теперь помнит... если ещё и помнит... что вы там спрашивали... )))))))))))
А так... если я правильно понял... ЖЦЦ тоже позволяет заталкивать значения в регистры минуя память... вот только... имхо... это плохая практика... и не от хорошей жизни...
И про асм для си-программера. И про говнокод от известного производителя. И про зачем оптимизировать если процы все мощней.
https://habr.com/ru/company/itsumma/blog/544830/