Долой империалистический интернационал!
-
- Машина состояний. Святое дело. Любую программу можно написать на одном свитче. :-) - Мущщина(27.04.2014 14:30)
- Прочитал Мущщина состояний. ))) - AlSa(30.04.2014 17:01)
- Написать то можно, разобрать потом написанное гиморно. Или вот из другого файла в начале функции строчка "uint tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;" и это пля в релизе!!! - Codavr(27.04.2014 17:50)
- Нда... И написал-то я стеба ради, а оно вон во что вылилось ...:-)) - Мущщина(27.04.2014 22:44)
- яфшоке - Codavr(28.04.2014 13:31)
- Да, слово "uint" меня тоже напрягает. Нет, штоб написать по человечески - "unsigned int"... Экономят на спичках, кошмар просто, где не надо. А где надо - никакой экономии. Ну вот нафига тратить по 4 символа на переменную, когда вполне достаточно Мущщина(42 знак., 27.04.2014 18:53)
- Достаточно просто unsigned, без int... Про переменные соглашусь. Естесственные имена переменных: i, j, k, l... для целочисленных и a, b, c... x, y, z для вещественных. Переменная вводится ведь как краткая форма записи более громоздкого выражения fk0(104 знак., 27.04.2014 21:28)
- Нет, просто unsigned - не согласен. Эт надо помнить, кто просто unsigned по умолчанию, а зачем грузить память лишней ерундой? - Мущщина(27.04.2014 21:49)
- Для любителей подробного программирования есть PL/1 и COBOL... - fk0(27.04.2014 22:07)
- А для нелюбителей есть Фортран... - Мущщина(27.04.2014 22:22)
- А ещё есть Verilog, в котором есть reg[99:0] для работы ну с ООООчень целыми... - USSR(27.04.2014 22:17,
)
- это вообще-то не язык программирования. ну да ладно. - Mahagam(27.04.2014 22:33)
- Для любителей подробного программирования есть PL/1 и COBOL... - fk0(27.04.2014 22:07)
- Нет, просто unsigned - не согласен. Эт надо помнить, кто просто unsigned по умолчанию, а зачем грузить память лишней ерундой? - Мущщина(27.04.2014 21:49)
- unsigned int - ненадежно. Для этого есть stdint.h - zeleny(27.04.2014 19:15, ссылка)
- Надежно. - Мущщина(27.04.2014 19:25)
- Что же тут надёжного? Размер инта может быть разный на разных МК. А если использовать типы из stdint, то у них размер точно определён. Или у вас какие-то другие критерии надёжности? - Apтём(27.04.2014 20:02)
- Да я вообще как-то редко переносил программы с 8051 на ARM, или там DSP, и обратно. По этой причине меня всегда устраивает тот размер инта, какой имеется в данной среде для данного МК. И совершенно не волнует размер инта для другого МК. И это Мущщина(20 знак., 27.04.2014 20:29)
- у меня наоборот - кучка общих библиотек, которые использовал с 8051/PIC, и теперь на STM32 и даже x86. Осторожность с размером int-a никогда не помешает. - zeleny(27.04.2014 21:22)
- Вот это меня всегда удивляло. Какие могут общие библиотеки у столь разнокалиберных штуковин, стоящих, к тому же, в абсолютно разных устройствах?!:-) И можно ли их после этого называть библиотеками? Это все надумано. Еще можно понять, когда Мущщина(430 знак., 27.04.2014 21:45)
- подсчет CRC/хешей, преобразование BIN<->BCD, modbus, random, аудио (wav/uLaw/ADPCM), еще было что-то, сейчас не помню... - zeleny(27.04.2014 22:17)
- А умножение?! Почему его нет в списке?! :-) Качество аудио на 8051 наверное потрясающее... :-) - Мущщина(27.04.2014 22:29)
- uLaw/ADPCM AVR/STM32 играет/жмет вполне нормально, не говоря про Raw/Wav - zeleny(28.04.2014 00:05)
- STM сожмет, тем более, что жатва там еще та.:-))) Я про 51 спрашивал. Мущщина(1861 знак., 28.04.2014 10:17)
- uLaw/ADPCM AVR/STM32 играет/жмет вполне нормально, не говоря про Raw/Wav - zeleny(28.04.2014 00:05)
- А умножение?! Почему его нет в списке?! :-) Качество аудио на 8051 наверное потрясающее... :-) - Мущщина(27.04.2014 22:29)
- Что мне, (де)кодирование base64, например, под каждый МК заново переписывать? - fk0(27.04.2014 22:09)
- Гы-гы, гуглится за 5 минут. Выкидывай свои либы, пока не протухли :-) - SciFi(27.04.2014 23:21)
- :-)) А там есть что переписывать?! - Мущщина(27.04.2014 22:16)
- подсчет CRC/хешей, преобразование BIN<->BCD, modbus, random, аудио (wav/uLaw/ADPCM), еще было что-то, сейчас не помню... - zeleny(27.04.2014 22:17)
- Надуманно. МК слишком слаб для программ "уровня windows". Для всего прочего надо думать чего делаешь и какие там особенности... POV(109 знак., 27.04.2014 21:27)
- А чтобы про нее никогда больше вспоминать не пришлось, нужно раз и навсегда тайпдефнуть u8/u16/u32/u64 и s8/s16/s32/s64 вместо всяких unsigned long long и прочей подобной "кошерной" херни - MBedder(27.04.2014 21:26)
- Говнокод безусловный по двум причинам: разным процессорам удобней работать с разным размером слова. Во-вторых если тебе уж припёрло фиксированный размер, то выше сказано -- stdint.h. За самодельные типы -- сжигать нужно. Причин к тому тоже fk0(190 знак., 27.04.2014 22:01)
- у меня проект на вертолёте начинался чисто с передачи телеметрии. канал ограничен, данных на передачу прибавляется с каждым днём. мне тут удобнее чётко видеть сколько байт я отвожу под то или иное поле. обороты двигла - тут u16, количество топлива Mahagam(181 знак., 27.04.2014 22:32)
- Отчасти да... наработки любой крупной компании ужасают многократным тайпдефаном когда заебешься понимать, что за тип ты используешь. - POV(27.04.2014 22:05)
- Любители "выжать последний такт" не одобрят: всё-таки на армах int быстрее, чем u8. Тогда уж uint_fast8_t и проч. - SciFi(27.04.2014 21:35)
- Я про typedef, а не про рациональное использование, которое, разумеется, должно однозначно вытекать из особенностей архитектуры конкретного ядра - MBedder(27.04.2014 21:40)
- Ахтунг! Преждевременная оптимизация детектед: "рациональное использование, которое, разумеется, должно однозначно вытекать из особенностей архитектуры конкретного ядра". Ни разу не однозначно. В 95+% случаев нас рать. - SciFi(27.04.2014 21:45)
- И это на фоне "51е - гавно мамонта, плохая архитектура"? Гыгы, сам себя перечитывай иногда хоть ) - POV(27.04.2014 21:47)
- Диалектика, йоптыть :-) SciFi(66 знак., 27.04.2014 21:48)
- Для ногодрыга неплохо... POV(399 знак., 27.04.2014 21:54)
- А разве я говорил, что Си, натянутый на 8051, как перчатка на ногу, - это плохо всегда и везде? Если ресурсы не жмут, то хоть на машину Тьюринга :-) - SciFi(27.04.2014 23:24)
- Та же битовая адресация крайне хороша когда ресурсов мало... POV(151 знак., 27.04.2014 23:29)
- У них же нет МК с памятью больше 128к? А на каждую C-строчку там как бы не 20 байт выходит. Не разбежишься. - fk0(27.04.2014 22:11)
- Ну так и не говорю за серьезные вещи. Всякая херь из серии промышленных контролеров. - POV(27.04.2014 22:16)
- А разве я говорил, что Си, натянутый на 8051, как перчатка на ногу, - это плохо всегда и везде? Если ресурсы не жмут, то хоть на машину Тьюринга :-) - SciFi(27.04.2014 23:24)
- Для ногодрыга неплохо... POV(399 знак., 27.04.2014 21:54)
- Диалектика, йоптыть :-) SciFi(66 знак., 27.04.2014 21:48)
- И это на фоне "51е - гавно мамонта, плохая архитектура"? Гыгы, сам себя перечитывай иногда хоть ) - POV(27.04.2014 21:47)
- Ахтунг! Преждевременная оптимизация детектед: "рациональное использование, которое, разумеется, должно однозначно вытекать из особенностей архитектуры конкретного ядра". Ни разу не однозначно. В 95+% случаев нас рать. - SciFi(27.04.2014 21:45)
- Я про typedef, а не про рациональное использование, которое, разумеется, должно однозначно вытекать из особенностей архитектуры конкретного ядра - MBedder(27.04.2014 21:40)
- Говнокод безусловный по двум причинам: разным процессорам удобней работать с разным размером слова. Во-вторых если тебе уж припёрло фиксированный размер, то выше сказано -- stdint.h. За самодельные типы -- сжигать нужно. Причин к тому тоже fk0(190 знак., 27.04.2014 22:01)
- Вот это меня всегда удивляло. Какие могут общие библиотеки у столь разнокалиберных штуковин, стоящих, к тому же, в абсолютно разных устройствах?!:-) И можно ли их после этого называть библиотеками? Это все надумано. Еще можно понять, когда Мущщина(430 знак., 27.04.2014 21:45)
- у меня наоборот - кучка общих библиотек, которые использовал с 8051/PIC, и теперь на STM32 и даже x86. Осторожность с размером int-a никогда не помешает. - zeleny(27.04.2014 21:22)
- Да я вообще как-то редко переносил программы с 8051 на ARM, или там DSP, и обратно. По этой причине меня всегда устраивает тот размер инта, какой имеется в данной среде для данного МК. И совершенно не волнует размер инта для другого МК. И это Мущщина(20 знак., 27.04.2014 20:29)
- Что же тут надёжного? Размер инта может быть разный на разных МК. А если использовать типы из stdint, то у них размер точно определён. Или у вас какие-то другие критерии надёжности? - Apтём(27.04.2014 20:02)
- Надежно. - Мущщина(27.04.2014 19:25)
- Достаточно просто unsigned, без int... Про переменные соглашусь. Естесственные имена переменных: i, j, k, l... для целочисленных и a, b, c... x, y, z для вещественных. Переменная вводится ведь как краткая форма записи более громоздкого выражения fk0(104 знак., 27.04.2014 21:28)
- "Нет ничего более постоянного, чем временное", "Работает - не трогай" © Народная мудрость :-) - SciFi(27.04.2014 17:51)
- Это даже не мудрость, а истина. Но мне поручено все это тронуть, исправить и дополнить. Явшоке. И самое прикольное никто уже не знает как это работает и плохо представляют что оно делает. - Codavr(27.04.2014 17:56)
- вот и дополняйте: uint tmp0, tmp1,...tmp7, tmp8, tmp9 (и еще сколько вам надо). Если начать переписывать код который "никто уже не знает как это работает и плохо представляют что оно делает" то после переписывания полезут баги, причем неописуемые. 3m(240 знак., 27.04.2014 18:28)
- Дык. Беда в том что для того чтобы добавлять надо разобраться чего же оно делает. Я пока на этапе разборок, а не изменений. - Codavr(27.04.2014 19:48 - 20:08)
- На бумажке изобразить все состояния автомата (возможные значения переменной, которая в switch). Изобразить переходы (когда переменная изменяется) и предшествующие им логические условия, выполняемые на переходах действия (можно вынести в отдельные fk0(741 знак., 27.04.2014 21:57)
- Чем собсно и занимаюсь в настоящий момент. - Codavr(28.04.2014 13:34)
- На бумажке изобразить все состояния автомата (возможные значения переменной, которая в switch). Изобразить переходы (когда переменная изменяется) и предшествующие им логические условия, выполняемые на переходах действия (можно вынести в отдельные fk0(741 знак., 27.04.2014 21:57)
- Дык. Беда в том что для того чтобы добавлять надо разобраться чего же оно делает. Я пока на этапе разборок, а не изменений. - Codavr(27.04.2014 19:48 - 20:08)
- вот и дополняйте: uint tmp0, tmp1,...tmp7, tmp8, tmp9 (и еще сколько вам надо). Если начать переписывать код который "никто уже не знает как это работает и плохо представляют что оно делает" то после переписывания полезут баги, причем неописуемые. 3m(240 знак., 27.04.2014 18:28)
- Это даже не мудрость, а истина. Но мне поручено все это тронуть, исправить и дополнить. Явшоке. И самое прикольное никто уже не знает как это работает и плохо представляют что оно делает. - Codavr(27.04.2014 17:56)
- Нда... И написал-то я стеба ради, а оно вон во что вылилось ...:-)) - Мущщина(27.04.2014 22:44)
- Прогони через визуализатор - Датчик(27.04.2014 08:06,
)
- Это как? Который блок-схему рисует чтоли? Что-то мне пока не попадалось такого чтобы делал более понятным структуру взбалмошного кода. - Codavr(27.04.2014 08:35 - 08:38)
- scitools.com Интересно, поможет? - Датчик(27.04.2014 14:55,
)
- Спасибо. Попробую. По результатам отпишусь. - Codavr(27.04.2014 17:39)
- scitools.com Интересно, поможет? - Датчик(27.04.2014 14:55,
- Это как? Который блок-схему рисует чтоли? Что-то мне пока не попадалось такого чтобы делал более понятным структуру взбалмошного кода. - Codavr(27.04.2014 08:35 - 08:38)
- В голову приходит только симулятор другого процессора. - fk0(26.04.2014 12:07)
- Файл называется "Protokol.c" 95% файла этот свич. - Codavr(26.04.2014 18:20)
- Через обфускатор прогнали, видимо. Протокол-то секретный. - SciFi(26.04.2014 18:53)
- Вряд ли. Похоже просто добавляли куски по мере надобности не особо заботясь о том как дальше жить. - Codavr(26.04.2014 20:35)
- Человеческий обфускатор. Он самый лучший :-) - SciFi(26.04.2014 20:39)
- Руки отрубить и вставить на место. - Codavr(26.04.2014 20:58)
- Человеческий обфускатор. Он самый лучший :-) - SciFi(26.04.2014 20:39)
- Вряд ли. Похоже просто добавляли куски по мере надобности не особо заботясь о том как дальше жить. - Codavr(26.04.2014 20:35)
- Хорошо, что не goto... - fk0(26.04.2014 18:27, ссылка)
- И где ты это гуано откопал ? Там проблема не в goto, я его и сам применяю иногда, только для выхода из цикла, или для обхода куска кода, когда начальные скобки заiбешься искать где-то там, наверху, среди других скобок. _basile(232 знак., 26.04.2014 20:07,
)
- По сравнению с тем что передо мной, этот гото можно считать очень хорошо структурированным (самая большая фукция всего то 300 строк) и даже несколько избыточно комментированным файлом :))) - Codavr(26.04.2014 18:43)
- если в свиче кейсы определены дифайнами, то больше комментов не нужно ;) - Vladimir Ljaschko(26.04.2014 22:29)
- Да я же не утверждаю, что разобраться невозможно вообще. Я сказал, что это очень увлекательный процесс, особенно когда времени свободного не дохрена. Ну а дефайны есть конечно. Вот такие например Codavr(167 знак., 27.04.2014 08:32)
- Пересмотрел свои реализации протоколов - больше 2к строк нету, но видел код для PC, там сделано в лоб в одном файле и вполне может быть 10k. Vladimir Ljaschko(339 знак., 27.04.2014 09:12)
- У меня с 80-х годов хранится распечатка ассемблера BIOS для IBM PC AT. Его можно читать не глядя в левую половину, одни каменты. Студням это надо показывать как образец для подражания. - Codavr(27.04.2014 09:22 - 09:28)
- Не сложно несколько страниц отсканировать и опубликовать? - KLIM83(27.04.2014 10:32)
- Это не сложно, сложно найти куда я все это дело запихнул. На даче где то зарыто. Постараюсь не забыть в праздники буду на даче гляну. - Codavr(27.04.2014 16:54)
- Все давно опубликовано --> MBedder(27.04.2014 11:10, ссылка)
- а = b; // Присваиваем переменной A значение переменной B fk0(207 знак., 27.04.2014 12:41)
- Настоящий маразм - это приведенный выше кусок твоего гавнокода - MBedder(27.04.2014 14:03)
- а = b; // Присваиваем переменной A значение переменной B fk0(207 знак., 27.04.2014 12:41)
- Не сложно несколько страниц отсканировать и опубликовать? - KLIM83(27.04.2014 10:32)
- У меня с 80-х годов хранится распечатка ассемблера BIOS для IBM PC AT. Его можно читать не глядя в левую половину, одни каменты. Студням это надо показывать как образец для подражания. - Codavr(27.04.2014 09:22 - 09:28)
- Пересмотрел свои реализации протоколов - больше 2к строк нету, но видел код для PC, там сделано в лоб в одном файле и вполне может быть 10k. Vladimir Ljaschko(339 знак., 27.04.2014 09:12)
- case 1287: goto L435 :)) - MBedder(26.04.2014 22:31)
- Да я же не утверждаю, что разобраться невозможно вообще. Я сказал, что это очень увлекательный процесс, особенно когда времени свободного не дохрена. Ну а дефайны есть конечно. Вот такие например Codavr(167 знак., 27.04.2014 08:32)
- если в свиче кейсы определены дифайнами, то больше комментов не нужно ;) - Vladimir Ljaschko(26.04.2014 22:29)
- И где ты это гуано откопал ? Там проблема не в goto, я его и сам применяю иногда, только для выхода из цикла, или для обхода куска кода, когда начальные скобки заiбешься искать где-то там, наверху, среди других скобок. _basile(232 знак., 26.04.2014 20:07,
- Через обфускатор прогнали, видимо. Протокол-то секретный. - SciFi(26.04.2014 18:53)
- Файл называется "Protokol.c" 95% файла этот свич. - Codavr(26.04.2014 18:20)
- Машина состояний. Святое дело. Любую программу можно написать на одном свитче. :-) - Мущщина(27.04.2014 14:30)