-
- За такой код и такие советы -- сжигать нужно. fk0(347 знак., 21.05.2015 23:53)
- Люди, какого чёрта с вами случилось? Может, ещё голосом начитать и на том конце распознать? s32 мантиссу и s32 порядок передайте, вот и полная кроссплатформенность. Николай Коровин(882 знак., 23.05.2015 11:42)
- ... закладывались на возможность портирования под другой эндианнес 3m(285 знак., 23.05.2015 19:16)
- а что, собственно, в софте меняться должно? или вы докуа адресных операций с типами разных размеров делали? ну так ССЗБ. если такой хернёй не страдать, то компилятору абсолютно пофик на размер индейцев. - Mahagam(23.05.2015 19:24)
- Дык может асма много. Дело житейское. - Олдфаг(23.05.2015 20:03, )
- асма нету но есть адресные операции. повсеместно. так случилось потому что сама мысль о BE платформе на момент создания по была дикостью. - 3m(23.05.2015 21:12)
- просто адресные? или такие, где говнокодер лячкал говнокод с преобразованиями типов? Mahagam(42 знак., 23.05.2015 21:39)
- второе, ясный пень. отказаться от платформы BE мешает звериный оскал капитализма. - 3m(23.05.2015 23:04)
- просто адресные? или такие, где говнокодер лячкал говнокод с преобразованиями типов? Mahagam(42 знак., 23.05.2015 21:39)
- асма нету но есть адресные операции. повсеместно. так случилось потому что сама мысль о BE платформе на момент создания по была дикостью. - 3m(23.05.2015 21:12)
- Дык может асма много. Дело житейское. - Олдфаг(23.05.2015 20:03, )
- а что, собственно, в софте меняться должно? или вы докуа адресных операций с типами разных размеров делали? ну так ССЗБ. если такой хернёй не страдать, то компилятору абсолютно пофик на размер индейцев. - Mahagam(23.05.2015 19:24)
- Проблема в том, что здесь мыслят исключительно в терминах ассемблеров, битов, и байтов. Какая в сущности разница как записано число. В Tcl, например, есть концепция "всё есть строка". На самом деле, за ради оптимизации, внутри может быть и float, fk0(232 знак., 23.05.2015 13:10)
- BTW я ж предлагал разобрать на мантиссу и экспоненту и передать целыми числами, несколько дней назад. SciFi ещё привёл более правильные функции, как это сделать (но они C99 и для старых компиляторов решение со scanf/printf опять же универсальнее). - fk0(23.05.2015 13:07)
- Вообще-то frexp(), ldexp() - это C90. Да, double, но в C90 почти везде double. - SciFi(23.05.2015 14:32)
- Действительно... есть такое... тогда не просто нафига, а дважды нафига? О_о :) Разобрать флот на кораблики -- не неделя, а полчаса. Плавали. - Николай Коровин(23.05.2015 14:13)
- В этом и заключается разница между "у меня работает" и "работает вообще". Полчаса? Не смеши. Между кодом написанным студентом за полчаса и разработкой проф. уровня -- космическая пропасть. Хотя на первый взгляд может быть похоже очень. Так вот fk0(414 знак., 23.05.2015 14:25)
- Если в этих фн. детерминировано поведение на NaN и +-Inf (лень сча смотреть) -- нужно юзать их. Нет -- нужно за полчаса свалять свои, где это будет детерминировано и строго документировано. А вообще обычно с датчиков идут fixed-point %) Николай Коровин(218 знак., 23.05.2015 20:39)
- Где-то в недрах Сахары лежит статья как "доточить" printf чтобы он не засирал флоат обломками меклих фракций. Это так, музыкой навеяло. - Скрипач(23.05.2015 14:28)
- Ну конечно. printf теперь вообще нельзя использовать. Только писать свой говнокод на каждый случай жизни. - fk0(23.05.2015 14:41)
- Код вообще писать нельзя. Нужно заниматься сельским хозяйством и выращивать хлеб. А лучше залезть обратно на деревья и жрать желуди. Скрипач(28 знак., 23.05.2015 15:00 - 15:07)
- Ну конечно. printf теперь вообще нельзя использовать. Только писать свой говнокод на каждый случай жизни. - fk0(23.05.2015 14:41)
- В этом и заключается разница между "у меня работает" и "работает вообще". Полчаса? Не смеши. Между кодом написанным студентом за полчаса и разработкой проф. уровня -- космическая пропасть. Хотя на первый взгляд может быть похоже очень. Так вот fk0(414 знак., 23.05.2015 14:25)
- Код со сканфом и принфом работает сразу, сразу отлажен. Самостоятельный разбор IEEE -- это неделя работы, если с отладкой и 100500 последующих исправлений. Если мы не 3D-ускоритель делаем, где нужно передать 100500 чисел в секунду -- нужно fk0(231 знак., 23.05.2015 13:04)
- а указать что в канале тупо 4 байта того самого флоата по иееее754 и указать размер индейцев не канает? - Mahagam(23.05.2015 11:49)
- И на приёмном конце написать парсер для трёх видов эндианности. Или опять, в 80% случаев будет ARM типа STM32 и x86, и поэтому нас не колышет всё остальное? - fk0(23.05.2015 13:06)
- думаю, что little-endian он сегодня в 95% случаев встречается. а с тем чем приходится работать - то и вообще 100%. если передачу задокументировать - то подстраиваться придётся тем несчастным, кому достались большие индейцы. Mahagam(460 знак., 23.05.2015 13:30)
- Именно что "не колышет остальное". Гоните ссаными тряпками толерастов из эмбеддерства :) Скрипач(185 знак., 23.05.2015 13:12)
- У пиков (24) адресная ячейка программных инструкций занимает 1.5 байта. Кому нужно -- подстраиваются. - fk0(23.05.2015 13:47)
- Давайте называть вещи своими именами. Это мечта задрота, который может за счёт качественного выворота собственного мозга получить +50% к скорости. Бальзам на душу то, что такие вещи ещё существуют, значит, есть и настоящие задроты, а не одно Николай Коровин(445 знак., 23.05.2015 21:00 - 21:41)
- Мы про разработку ПО проф. уровня или поделки задротов? Задрот может за день наваять много чего. Но до рабочего решения там путь может быть в годы. Разница с профессионалами в разработке ПО в том, что последние не рожают говнокод со скоростью fk0(362 знак., 23.05.2015 23:24)
- побольше пафоса, ага. - Mahagam(23.05.2015 23:39)
- кроме пика есть HCS08 от моторолы. там ассемблерный код не читается совсем даже если он полностью сопровождён си-шным исходником. - Mahagam(23.05.2015 21:41)
- Мы про разработку ПО проф. уровня или поделки задротов? Задрот может за день наваять много чего. Но до рабочего решения там путь может быть в годы. Разница с профессионалами в разработке ПО в том, что последние не рожают говнокод со скоростью fk0(362 знак., 23.05.2015 23:24)
- Но зато имеют (или это их имеют, не суть) дело с решениями "профессионального уровня"(тм) Скрипач(17 знак., 23.05.2015 13:50)
- Несмотря на всё что у них там сделано через ()(), продукция микрочипа -- это действительно профессиональный уровень. Недоступный любителям. Для которых STM32. - fk0(23.05.2015 14:03)
- STM32 заставить себя заценить не смог. Если верить стандартной документации, тот же "профессиональный уровень" только вид сбоку. Потакать хартурщикам-чипостроителям не намерен. - Скрипач(23.05.2015 14:15)
- Только AVR? Нет, я бы пожалуй предпочёл PIC24, несмотря на всё. Или даже PIC18. Или даже x51. Проблема AVR в том, что он не приспособлен для программирования на C, со своей гарвардской моделью памяти (flash vs не flash). И уж 16-битное ядро всяко fk0(9 знак., 23.05.2015 23:28)
- А как же их реклама, что заточен под С? Даже в википедии отголосок есть: symbions(182 знак., 24.05.2015 22:54)
- Ага. Врут, гады. - SciFi(24.05.2015 22:59)
- А я завис на AVR. Освоенный инструментарий, добротная документация, что еще нужно чтобы спокойно встретить старость? :) - Скрипач(23.05.2015 23:40)
- Если AVR производится и продается, значит это кому-то нужно. Так что почему бы и нет? Больше микроконтроллеров хороших и разных. Ps: а вы на saabclub случаем не участник форума? - OlegPowerC(24.05.2015 12:31)
- Ну да, а врождённое уродство может восприниматься как милая сердцу эксцентричность :-) - SciFi(24.05.2015 08:21)
- А как же их реклама, что заточен под С? Даже в википедии отголосок есть: symbions(182 знак., 24.05.2015 22:54)
- Только AVR? Нет, я бы пожалуй предпочёл PIC24, несмотря на всё. Или даже PIC18. Или даже x51. Проблема AVR в том, что он не приспособлен для программирования на C, со своей гарвардской моделью памяти (flash vs не flash). И уж 16-битное ядро всяко fk0(9 знак., 23.05.2015 23:28)
- STM32 заставить себя заценить не смог. Если верить стандартной документации, тот же "профессиональный уровень" только вид сбоку. Потакать хартурщикам-чипостроителям не намерен. - Скрипач(23.05.2015 14:15)
- Несмотря на всё что у них там сделано через ()(), продукция микрочипа -- это действительно профессиональный уровень. Недоступный любителям. Для которых STM32. - fk0(23.05.2015 14:03)
- Давайте называть вещи своими именами. Это мечта задрота, который может за счёт качественного выворота собственного мозга получить +50% к скорости. Бальзам на душу то, что такие вещи ещё существуют, значит, есть и настоящие задроты, а не одно Николай Коровин(445 знак., 23.05.2015 21:00 - 21:41)
- У пиков (24) адресная ячейка программных инструкций занимает 1.5 байта. Кому нужно -- подстраиваются. - fk0(23.05.2015 13:47)
- >по иееее754 вариант... ничего не кроссплатформим, а просто декларируем, что именно шлём. Кто не такой -- пусть сам конвертит. - Николай Коровин(23.05.2015 11:51)
- ИЧСХ, в 99% случаев ничего конвертить не придётся. код будет предельно простой и быстрый. - Mahagam(23.05.2015 12:00)
- И на приёмном конце написать парсер для трёх видов эндианности. Или опять, в 80% случаев будет ARM типа STM32 и x86, и поэтому нас не колышет всё остальное? - fk0(23.05.2015 13:06)
- ... закладывались на возможность портирования под другой эндианнес 3m(285 знак., 23.05.2015 19:16)
- ну конечно, чтобы передать 4 байта (что и есть флоат по-сути) из одного калькулятора в другой мы будем городить огород из вызовов библиотечных функций, городить промежуточные массивы магической длины и заниматься прочим бредом кодогенераторства. Mahagam(226 знак., 22.05.2015 00:49)
- Люди, какого чёрта с вами случилось? Может, ещё голосом начитать и на том конце распознать? s32 мантиссу и s32 порядок передайте, вот и полная кроссплатформенность. Николай Коровин(882 знак., 23.05.2015 11:42)
- Ясно короче я так понял берем целое по адресу и так же целое кладем по адресу, ща попробую. Спасибо. - PeterD(21.05.2015 16:36)
- Есть магическое слово union Bill(181 знак., 21.05.2015 17:57)
- А почему не структура,? - LordN(22.05.2015 09:36)
- Всегда так делаю. Sprint и прочее говно на микрашах - от лукавого. - Звероящер(22.05.2015 08:11)
- Ну тоже Чингачгуки в засаде сидят. - Олдфаг(21.05.2015 18:13, )
- Более кошерно, как мне кажется, юнион {float;int32} И Передавать в RS побайтно (int32>>24),(int32>>16),(int32>>8),(int32>>0). А на том конце собирать байты в int32, каждый раз кроме последнего после приема сдвигать <<= 8. Тог Олдфаг(176 знак., 21.05.2015 20:22, )
- ну ващета можно {float;char[4]} - danuna(22.05.2015 18:38)
- Да можно и вообще без пользовательских типов примерно так: rs232 = *(uint8_t*)(& flot + 0); rs232 = *(uint8_t*)(& flot + 1); rs232 = *(uint8_t*)(& flot + 2); rs232 = *(uint8_t*)(& flot + 3); Но есть более кошерные способы. - Олдфаг(22.05.2015 19:00, )
- да можно ваще в машинных кодах индусить, чо уж там. или scanf printf для особо одаренных - на тиньках самое то. - danuna(22.05.2015 22:05)
- Ну, это одного поля ягоды с union{float,char[]} - Олдфаг(22.05.2015 22:42, )
- тема переходит в философию. с моей точки зрения чем короче код - тем меньше шанс сделать в нем ошибку. коль пользуемся 8-ми битным регистром ком-порта то и данные выравнивать надо на 8 бит - danuna(22.05.2015 23:24)
- Код не длинный. "Да будет свет". "Плодитесь и размножайтесь". Дьявол в деталях, как обычно. - SciFi(22.05.2015 23:27)
- у соседа всегда длиннее. - danuna(22.05.2015 23:33)
- Код не длинный. "Да будет свет". "Плодитесь и размножайтесь". Дьявол в деталях, как обычно. - SciFi(22.05.2015 23:27)
- А я давно заметил: ежели структуры, сдвиги или объединения, то сразу живой резонанс. Скучно,
господапосоны. - SciFi(22.05.2015 23:18)- Можно расширить списочек. Водка, бабы, укропы, либероиды, структуры, сдвиги и объединения. И уже веселее) - Олдфаг(22.05.2015 23:30, )
- ща генерал на особо одаренных скрипача натгавит. - danuna(22.05.2015 23:37)
- Можно расширить списочек. Водка, бабы, укропы, либероиды, структуры, сдвиги и объединения. И уже веселее) - Олдфаг(22.05.2015 23:30, )
- тема переходит в философию. с моей точки зрения чем короче код - тем меньше шанс сделать в нем ошибку. коль пользуемся 8-ми битным регистром ком-порта то и данные выравнивать надо на 8 бит - danuna(22.05.2015 23:24)
- Ну, это одного поля ягоды с union{float,char[]} - Олдфаг(22.05.2015 22:42, )
- да можно ваще в машинных кодах индусить, чо уж там. или scanf printf для особо одаренных - на тиньках самое то. - danuna(22.05.2015 22:05)
- Да можно и вообще без пользовательских типов примерно так: rs232 = *(uint8_t*)(& flot + 0); rs232 = *(uint8_t*)(& flot + 1); rs232 = *(uint8_t*)(& flot + 2); rs232 = *(uint8_t*)(& flot + 3); Но есть более кошерные способы. - Олдфаг(22.05.2015 19:00, )
- вики вещает, что таки существовали демонические машины, имеющие разных индейцев для флоатов и для интов. а также вещает, что стандарт IEEE754 не пишет про индейцев - Mahagam(21.05.2015 23:22)
- Может быть и не IEEE754... - fk0(22.05.2015 00:16)
- Даже если нет IEEE754, есть frexp(), ldexp(): SciFi(202 знак., 22.05.2015 09:27)
- и кому оно нужно, такое всё из себя нестандартное? особенно если это всего лишь float. Mahagam(225 знак., 22.05.2015 00:55)
- А кому он нужен IEEE, если у нас нет матпроцессора с готовой его реализацией, а софтовая реализация быстрей и проще без IEEE (на конкретной платформе). И вопрос нужно задавать не "нахуя делать", а "есть ли у нас документ _гарантирующий_ fk0(55 знак., 22.05.2015 08:04)
- вопрос "накуя делать" даёт ответ о целесообразности реализации нестандартного решения. только полный еблан сделает в софте обычный сишный флоат несовместимым с IEEE754. менять что-то там внутри флоата - существенного смысла не найти, зато потеря Mahagam(397 знак., 22.05.2015 09:42 - 09:51)
- Разумеется наш любимый микрочип! И смысл очень большой. Там плавучка достаточно быстрая, в отличии от IEEE. - fk0(22.05.2015 09:50)
- да, когда ваял в 1998 на PIC14000 с плавучкой помню что у микрочипа было ассорти примеров где два чуть разных формата плавучки жили... щаз сваять обработку с плавучкой на МК с ОЗУ в 192 байта я бы за дикость посчитал, ан до сих пор приборы basilmak(12 знак., 22.05.2015 19:29)
- Насколько я помню (PIC14000 мне дали в 1996 г.) Формат там был все-таки один, который более подходит для реализации на 8-разрядных процессорах. Но за основу был взят формат IEEE. - Bill(25.05.2015 08:52, ссылка)
- Речь про конкретные реализации, а не аппноты. В hitech-C sizeof(float)==3. Какой там IEEE? - fk0(25.05.2015 09:32)
- Насколько я помню (PIC14000 мне дали в 1996 г.) Формат там был все-таки один, который более подходит для реализации на 8-разрядных процессорах. Но за основу был взят формат IEEE. - Bill(25.05.2015 08:52, ссылка)
- я для них слоган придумал: "Ошибайтесь быстро!" Mahagam(121 знак., 22.05.2015 10:13, ссылка)
- Ну начинается... Просто в тебе говорит зависть. - SciFi(22.05.2015 10:17)
- к чему зависть? - Mahagam(22.05.2015 10:24)
- Ну начинается... Просто в тебе говорит зависть. - SciFi(22.05.2015 10:17)
- да, когда ваял в 1998 на PIC14000 с плавучкой помню что у микрочипа было ассорти примеров где два чуть разных формата плавучки жили... щаз сваять обработку с плавучкой на МК с ОЗУ в 192 байта я бы за дикость посчитал, ан до сих пор приборы basilmak(12 знак., 22.05.2015 19:29)
- Разумеется наш любимый микрочип! И смысл очень большой. Там плавучка достаточно быстрая, в отличии от IEEE. - fk0(22.05.2015 09:50)
- "Окончательная бумажка. Фактическая! Настоящая! Броня!" © - SciFi(22.05.2015 09:09, youtube)
- вопрос "накуя делать" даёт ответ о целесообразности реализации нестандартного решения. только полный еблан сделает в софте обычный сишный флоат несовместимым с IEEE754. менять что-то там внутри флоата - существенного смысла не найти, зато потеря Mahagam(397 знак., 22.05.2015 09:42 - 09:51)
- А кому он нужен IEEE, если у нас нет матпроцессора с готовой его реализацией, а софтовая реализация быстрей и проще без IEEE (на конкретной платформе). И вопрос нужно задавать не "нахуя делать", а "есть ли у нас документ _гарантирующий_ fk0(55 знак., 22.05.2015 08:04)
- Потому что float это не регулярное 4-хбайтовое число как uint32, а совокупность разных полей. Отсюда и неупоминание индейцев как таковых. Однако стркутура float обозначена, и знаковый бит размещен в 31(старшем) разряде, что позволяет нам, грешным, Олдфаг(179 знак., 21.05.2015 23:54, )
- Может быть и не IEEE754... - fk0(22.05.2015 00:16)
- ну ващета можно {float;char[4]} - danuna(22.05.2015 18:38)
- Более кошерно, как мне кажется, юнион {float;int32} И Передавать в RS побайтно (int32>>24),(int32>>16),(int32>>8),(int32>>0). А на том конце собирать байты в int32, каждый раз кроме последнего после приема сдвигать <<= 8. Тог Олдфаг(176 знак., 21.05.2015 20:22, )
- не целое. тупо считаем что там массив о четырёх байтах. обычно функции приёма передачи требуют в качестве параметра адрес массива и его размер. Mahagam(146 знак., 21.05.2015 16:40)
- Нет шансов - если fk0 увидит, то все равно вам всем гореть, вместе со мной ;) - VL(21.05.2015 17:05, )
- Для кошерности надо ещё htonl()/ntohl() :-) - SciFi(21.05.2015 16:59)
- я про это в предыдушшем посте писал. - Mahagam(21.05.2015 17:04)
- Во, совсем кошерно и халяльно: SciFi(348 знак., 21.05.2015 17:08)
- а есть иные варианты? Mahagam(78 знак., 21.05.2015 17:21)
- MIPS. - fk0(22.05.2015 00:17)
- а есть иные варианты? Mahagam(78 знак., 21.05.2015 17:21)
- Во, совсем кошерно и халяльно: SciFi(348 знак., 21.05.2015 17:08)
- я про это в предыдушшем посте писал. - Mahagam(21.05.2015 17:04)
- sizeof(имя переменной) ))) - POV(21.05.2015 16:50)
- Есть магическое слово union Bill(181 знак., 21.05.2015 17:57)
- За такой код и такие советы -- сжигать нужно. fk0(347 знак., 21.05.2015 23:53)