-
- Вот за это уже пора бить ногами, fk0 на вас нет. У тебя 4-х битный
контроллер от часов? Зачем это кроилово? - evgeniy1294(22.02.2021 14:13)
- Ну я же упаковываю структуры не просто так для интереса. Оно же в
епроме сохраняется, в интерфейсе отображается итд. итп. - IBAH(24.02.2021 21:11)
- Я же говорю - сериализация, также компактно, безопасно и не зависит
от компилятора. Банальный пример небезопасности вашего кода - при
доступе к полю е экземпляра типа s_t на СМ0 будет вызвано исключение (busfault скорее всего, точно не
помню) из-за невыровненного доступа к памяти. Есть куча ядер,
которые не поддерживают невыровненный доступ к памяти: CM0, CM0+,
некоторые сборки RISCV. Куча их. evgeniy1294(113 знак., 24.02.2021 21:30)
- Вы будете смеяться, но переносимость далеко не всегда нужна. - SciFi(24.02.2021 21:45)
- В соседней теме обсуждают переход на другие МК из-за дефицита, так
что теперь нужна. - evgeniy1294(25.02.2021 12:17)
- Предвидеть будущие проблемы — это хорошо, но не надо увлекаться >>> - SciFi(25.02.2021 12:32, youtube)
- Не буду, но делать через корявую нестандартизированнную херню при
наличии нормального решения не нужно вообще никогда. - evgeniy1294(24.02.2021 21:48)
- Нормальное решение, т.е. сериализация, может оказаться в 100 раз
медленнее и потребовать в 3 раза больше памяти. Надо соблюдать
какие-то разумные границы, что бы не удивляться почему новое ПО
такое медленное. - AlexBi(24.02.2021 23:08)
- Да хоть в 500, если будет работать надежно, меня устроит. Куда вы
эти такты экономите? Процесс сериализации займет пару микросекуд на
каком-нибудь f4, да хоть 10 мкс. Кроилово ведет к попадалову. evgeniy1294(99 знак., 24.02.2021 23:23)
- Не всегда есть такой запас по быстродействию. Если эта десериализация попадает в цикл вычислений, который должен крутиться достаточно быстро, потери на десериализацию могут оказаться непозволительной роскошью. Конечно, можно взять процессор быстрее и ОЗУ по-больше, но тогда в другом месте начинаем проигрывать (потребление, цена). И все ради непонятно чего. Ошибиться можно и при написании сериализатора-десериализатора. AlexBi(100 знак., 25.02.2021 09:24)
- Забыл ещё. Невыровненный доступ к памяти ни разу не быстрый, может
быть и в 10 раз медленнее. На некоторых архитектурах он вообще
вызывает внутреннее исключение с последующей обработкой, что как бы
намекает на то, что быстрее не будет. - evgeniy1294(24.02.2021 23:36)
- Невыровненный доступ элементам структуры компенсируется
компилятором, т.е. если надо он сам вставляет в каком-то смысле
сериализацию-десериализацию. - AlexBi(25.02.2021 09:26)
- Не факт, надеяться на такое глупо, тем более с пакованными структурами. Просто получите hardfault. - evgeniy1294(25.02.2021 10:02)
- Невыровненный доступ элементам структуры компенсируется
компилятором, т.е. если надо он сам вставляет в каком-то смысле
сериализацию-десериализацию. - AlexBi(25.02.2021 09:26)
- Да хоть в 500, если будет работать надежно, меня устроит. Куда вы
эти такты экономите? Процесс сериализации займет пару микросекуд на
каком-нибудь f4, да хоть 10 мкс. Кроилово ведет к попадалову. evgeniy1294(99 знак., 24.02.2021 23:23)
- Нормальное решение, т.е. сериализация, может оказаться в 100 раз
медленнее и потребовать в 3 раза больше памяти. Надо соблюдать
какие-то разумные границы, что бы не удивляться почему новое ПО
такое медленное. - AlexBi(24.02.2021 23:08)
- В соседней теме обсуждают переход на другие МК из-за дефицита, так
что теперь нужна. - evgeniy1294(25.02.2021 12:17)
- Вы будете смеяться, но переносимость далеко не всегда нужна. - SciFi(24.02.2021 21:45)
- В епроме сохраняется и в интерфейсе отображается, то есть привязано
к конкретному компилятору. Вот и посмотрите, как этот компилятор
это хозяйство упаковывает. Грабли могут возникнуть, если компилятор
поменялся по дороге, а формат данных в епроме остался старый, то
есть весьма маловероятный сценарий. - SciFi(24.02.2021 21:26)
- Талатна. Девайсы в поле, возникла потребь чего-то добавить. Которой
версией ломаного Яра компиляли - бог весть. Попадос. - LightElf(24.02.2021 23:14)
- Если обновляешь прошивку, предварительно не протестировав, значит
сам себе злобный буратина. - SciFi(25.02.2021 08:08)
- Проще не раскладывать грабли. Ну или раскладывать их аккуратно и огородить табличками. - LightElf(25.02.2021 11:34)
- Если обновляешь прошивку, предварительно не протестировав, значит
сам себе злобный буратина. - SciFi(25.02.2021 08:08)
- Талатна. Девайсы в поле, возникла потребь чего-то добавить. Которой
версией ломаного Яра компиляли - бог весть. Попадос. - LightElf(24.02.2021 23:14)
- Я же говорю - сериализация, также компактно, безопасно и не зависит
от компилятора. Банальный пример небезопасности вашего кода - при
доступе к полю е экземпляра типа s_t на СМ0 будет вызвано исключение (busfault скорее всего, точно не
помню) из-за невыровненного доступа к памяти. Есть куча ядер,
которые не поддерживают невыровненный доступ к памяти: CM0, CM0+,
некоторые сборки RISCV. Куча их. evgeniy1294(113 знак., 24.02.2021 21:30)
- Ну я же упаковываю структуры не просто так для интереса. Оно же в
епроме сохраняется, в интерфейсе отображается итд. итп. - IBAH(24.02.2021 21:11)
- 1) зачем нужно знать конкретное смещение? Макрос offsetof даст
результат. 2) упаковка точно нужна? - VLLV(21.02.2021 22:58)
- +1, тем более что offsetof функция ANSI C, должна быть в любом компиляторе. - arhiv6(22.02.2021 18:47, ссылка)
- Один - потому что он или заклинит, или пациент станет трупом. Но ведь не обязательно стрелять себе в ноги. И не стоит полагаться на адресную арифметику битовых полей - lloyd(21.02.2021 22:12)
- Соломка — это static_assert. - SciFi(21.02.2021 21:47)
- "кроилово приводит к попадалову!!!" ))) - Aleksey_75(21.02.2021 21:43)
- Вот за это уже пора бить ногами, fk0 на вас нет. У тебя 4-х битный
контроллер от часов? Зачем это кроилово? - evgeniy1294(22.02.2021 14:13)