VladislavS 39 12 декабря, 2018 Опубликовано 12 декабря, 2018 · Жалоба stdint.h - это же стандарт языка. Даже wiki про него знает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
razrab83 21 12 декабря, 2018 Опубликовано 12 декабря, 2018 (изменено) · Жалоба 29 минут назад, jcxz сказал: Как и где определён этот самый uint_fast8_t? stdint.h 29 минут назад, jcxz сказал: Мой IAR_7.80.4 его не знает. Мой 8.2 знает ps откопал иар 7,2 - тоже знает Изменено 12 декабря, 2018 пользователем razrab83 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Integro 0 13 декабря, 2018 Опубликовано 13 декабря, 2018 · Жалоба On 12/12/2018 at 7:34 PM, jcxz said: Как и где определён этот самый uint_fast8_t? Мой IAR_7.80.4 его не знает. И в uCOS-II его тоже нет. Опеределен в стандарте С99: 7.18.1.3 Fastest minimum-width integer typeshttp://www.dii.uchile.cl/~daespino/files/Iso_C_1999_definition.pdf Стыдно Вам должно быть за такие слова!) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 231 13 декабря, 2018 Опубликовано 13 декабря, 2018 · Жалоба 10 минут назад, Integro сказал: Стыдно Вам должно быть за такие слова!) За какие слова? Я разве в чём-то соврал? Вставил в исходник, IAR сказал: "undefined". Прошёл поиском по всем версиям uCOS-II какие у меня есть (поскольку некоторые утверждали что оно там есть) вплоть до v2.92.13 - нету. Стыдно должно быть тем, кто утверждал, что оно используется в uCOS-II. Вот это откровенная неправда. А то что я его не использую... Так что с того? Не нужно значит. Я думаю, что Вы тоже многое не используете, что я знаю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 231 13 декабря, 2018 Опубликовано 13 декабря, 2018 · Жалоба 23 часа назад, razrab83 сказал: 90 int_fast8_t foo(int_fast8_t x) foo: 08004cb4: foo: MOVS R1, R0 92 if((x+127)>0) return 1; else return 0; 08004cb6: ADDS.W R0, R1, #127 ; 0x7f 08004cba: CMP R0, #1 08004cbc: BLT.N 0x8004cc2 08004cbe: MOVS R0, #1 08004cc0: B.N 0x8004cc4 08004cc2: MOVS R0, #0 08004cc4: BX LR 90 int foo(int x) foo: 08004cb4: foo: MOVS R1, R0 92 if((x+127)>0) return 1; else return 0; 08004cb6: ADDS.W R0, R1, #127 ; 0x7f 08004cba: CMP R0, #1 08004cbc: BLT.N 0x8004cc2 08004cbe: MOVS R0, #1 08004cc0: B.N 0x8004cc4 08004cc2: MOVS R0, #0 08004cc4: BX LR ARM, IAR, без оптимизации. Я тоже считаю, что лучше применять типы данных соответствующие описываемым ими сущностям. Код должен быть понятный и наглядный (а часто ещё и легко переносимый). Что касательно избыточности - современные компиляторы хорошо умеют справляются с "чужой" разрядностью. всякие оптимизаторы, int_fastN_t, intN_t, int_leastN_t ... Версия IAR-а, которым сиё скомпилено - какая? Вообще, это хороший тон - указывать номер версии компилятора, если приводите что-то касающееся его работы (листинги). У IAR-а между прочим в некоторых версиях от 8.xx до 8.32 есть баг касающийся как раз компиляции такого кода, где есть операции сравнения неосновных типов (например u16). Уже разбирали его на этом форуме. Потом они его поправили (в 8.30 или 8.32). Так что если Вы привели от такой кривой версии - то грош цена этим листингам. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 17 13 декабря, 2018 Опубликовано 13 декабря, 2018 · Жалоба 4 минуты назад, jcxz сказал: Стыдно должно быть тем, кто утверждал, что оно используется в uCOS-II. А кто утверждал что что-то используется в uCOS-II? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
razrab83 21 13 декабря, 2018 Опубликовано 13 декабря, 2018 · Жалоба 3 часа назад, jcxz сказал: Версия IAR-а, которым сиё скомпилено - какая? В 12.12.2018 в 22:01, razrab83 сказал: Мой 8.2 знает 3 часа назад, jcxz сказал: Так что если Вы привели от такой кривой версии - то грош цена этим листингам. В 10.12.2018 в 12:04, jcxz сказал: Может перестанем хамить и лучше чему-нить поучимся? Может перестать искать оправдания и лучше чему-нить поучимся? Определение int_fast8_t без листингов говорит само за себя. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 231 13 декабря, 2018 Опубликовано 13 декабря, 2018 · Жалоба 2 часа назад, razrab83 сказал: Может перестать искать оправдания и лучше чему-нить поучимся? Определение int_fast8_t без листингов говорит само за себя. Открыл этот самый stdint.h: И о чём же таком сокровенном говорит это: typedef __INT_FAST8_T_TYPE__ int_fast8_t; ??? Просветите неуча. Научите как из этого определения почерпнуть тонкости его реализации? И __INT_FAST8_T_TYPE__ нигде нету.... Ваш 8.2x здесь никак не авторитет - читайте ветку про IAR про баги. Незачем тут кривые листинги в подтверждение чего-то выкладывать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 13 декабря, 2018 Опубликовано 13 декабря, 2018 · Жалоба 5 минут назад, jcxz сказал: И __INT_FAST8_T_TYPE__ нигде нету.... Встроенный тип компилятора. Если потребовалось его появление - значит ни один из имевшихся типов под задачу не подходил полностью. Не заставляет задуматься? Ну хорошо: не нравится - не используйте, но вы уже две страницы доказываете, что раз вы его не используете, значит он не нужен вообще никому. В этом вы не правы. stdint.h появился в стандарте 19 лет назад, уже не девочка, уже можно пользоваться, ибо пользы от его использования больше, чем от неиспользования. Уже надо бить по рукам за всякие s16 и тому подобные велосипеды. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 13 декабря, 2018 Опубликовано 13 декабря, 2018 · Жалоба 21 минуту назад, jcxz сказал: Незачем тут кривые листинги в подтверждение чего-то выкладывать. В чем кривость данного листинга? 21 минуту назад, jcxz сказал: Ваш 8.2x здесь никак не авторитет Напротив. Даже если в нем есть ошибки, то в следующей версии ошибки исправят, а stdint.h останется. P.S. я до сих пор пользуюсь обычным кнопочным мобильным телефоном. Да, я называю его "телефоном здорового человека", но я не пытаюсь доказывать всем остальным, что их смартфоны - полный фуфел. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
razrab83 21 14 декабря, 2018 Опубликовано 14 декабря, 2018 · Жалоба 7 часов назад, razrab83 сказал: Определение int_fast8_t без листингов говорит само за себя. Определение (описание) в стандарте. Как минимум Цитата int_fast8_t uint_fast8_t - Integer type with a minimum of 8, 16, 32, or 64 bits. At least as fast as any other integer type with at least the specified width. Как максимум в инете полно разжевынных объяснений - что это такое. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 231 14 декабря, 2018 Опубликовано 14 декабря, 2018 · Жалоба 9 часов назад, Сергей Борщ сказал: Встроенный тип компилятора. Если потребовалось его появление - значит ни один из имевшихся типов под задачу не подходил полностью. Не заставляет задуматься? Ну хорошо: не нравится - не используйте, но вы уже две страницы доказываете, что раз вы его не используете, значит он не нужен вообще никому. Я ничего не доказываю, вы что-то путаете - я вообще ничего не говорил про нужность или ненужность его. Наоборот - только в свой адрес и слышу "Раз ты его не используешь, то ты лох". Тут привели его в качестве аргумента, я всего лишь спросил: "где его описание или что из себя представляет?" В ответ получил отсылки туда, где этого описания нет. 9 часов назад, Сергей Борщ сказал: В чем кривость данного листинга? В том, что данная версия IAR неправильно компилит код с uint16_t, а значит её листинг нельзя приводить в качестве объяснения работы с такими типами - он неверный: https://electronix.ru/forum/index.php?app=forums&module=forums&controller=topic&id=147939 PS: Да, вот теперь вижу разницу между типами (IAR_7.80.4): Спойлер #include <stdint.h> In section .text, align 2, keep-with-next int8_t foo1(int8_t x) { if ((x += 127) > 0) x++; _Z4foo1a: (+1) 0x307F ADDS R0,R0,#+127 0xB240 SXTB R0,R0 0x2801 CMP R0,#+1 0xBFA8 IT GE 0x1C40 ADDGE R0,R0,#+1 return x; 0xB240 SXTB R0,R0 0x4770 BX LR ;; return } In section .text, align 2, keep-with-next int_fast8_t foo2(int_fast8_t x) { if ((x += 127) > 0) x++; _Z4foo2i: (+1) 0x307F ADDS R0,R0,#+127 0x2801 CMP R0,#+1 0xBFA8 IT GE 0x1C40 ADDGE R0,R0,#+1 return x; 0x4770 BX LR ;; return } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться