|
Детская ошибка |
|
|
|
May 2 2016, 06:22
|
Частый гость
 
Группа: Участник
Сообщений: 176
Регистрация: 20-02-14
Из: Томск
Пользователь №: 80 612

|
Недавно столкнулся с одной странностью (по крайней мере для меня). Хотелось бы понять. Есть фрагмент года (упрощенный до безобразия): CODE int16u temp1, temp2; for (int32u i = 0; i < 10; i++) { temp1 = 0x0001; temp2 = 0xFFFE; if (~temp1 != temp2) continue; temp2 = temp1; }
Так вот, в этом фрагменте условный оператор и код после него никогда не выполняется. В отладчике после выполнения операции "temp2 = 0xFFFE;" происходит сразу переход на начало цикла. Переменные объявлены как int16u (== unsigned short (16 бит беззнаковое)) При этом никаких предупреждений на этапе компиляции. Если переменные объявить как int32u (== unsigned long (32 бита беззнаковое)), то условный оператор выполняется, но естественно результат всегда true. И код работает как надо только в таком варианте: CODE int16u temp1, temp2; for (int32u i = 0; i < 10; i++) { temp1 = 0x0001; temp2 = 0xFFFE; temp1 = ~temp1; if (temp1 != temp2) continue; temp2 = temp1; }
В этом случае выполняются все операторы, входящие в тело цикла. IAR C/C++ Compiler for ARM 7.40.3.8902 (7.40.3.8902) Добавлю: Оптимизация отключена. Проект под микроконтроллер STM32F105VCT6
Сообщение отредактировал amiller - May 2 2016, 06:41
|
|
|
|
|
 |
Ответов
|
May 9 2016, 12:41
|
Местный
  
Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682

|
Цитата(zltigo @ May 9 2016, 14:56)  Если "программист" не знает языка и НЕ ХОЧЕТ читать сообщения компилятора ПОДАВИВ ИХ, то да. Вы вопрос качества языка постоянно сводите к вопросу качества программиста.
|
|
|
|
|
May 9 2016, 13:38
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (aiwa @ May 9 2016, 15:41)  Вы вопрос качества языка постоянно сводите к вопросу качества программиста. Есть язык, он описан. Как любой ЖИВОЙ язык он имеет опоеделенные правила и умолчания. Их надо знать. Если кто не знает языка и более того, плюет на сообщения, которые генерят компиляторы написанные знающими язык людьми, то это есть проблема "качества порограммиста" и только его. QUOTE (scifi @ May 9 2016, 15:49)  родить супер-пупер язык.. Спасибо, не надо. Уже рожали. Когда пытабтся рожать язык ради языка, а не дела, то получабтся ублюдки типа Ada, Python и иже с ними.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
May 9 2016, 16:57
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (dxp @ May 9 2016, 19:29)  Питон - великолепный язык, очень простой, но при этом необычайно мощный, гибкий. Ага. Беды начинаются, когда "обучившиеся программированию" начинают на нем программировать  . QUOTE И создавался он не ради языка, а как язык для обучения программированию Вот то, что он создавался для обучения программированию - вот это и есть родимое пятно всех "языков ради языка". Ни Си ни Си++, ни тот же Perl не создавались для обучения, они создавались для РАБОТЫ. QUOTE , но оказался очень эффективным и для решения практических задач. "Мама мыла раму..." ©  . В реальности, все хуже - не далее, как месяц назад очередная утилитка тупо отказалась запускаться вываливаясь с характерными питоновскими воплями  . Утилитка о NXP/Jennic просто командная строка, но зачем то размером 250K и DLL-ок на полмега. За что?
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
May 10 2016, 06:57
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
QUOTE (zltigo @ May 9 2016, 22:57)  Ага. Беды начинаются, когда "обучившиеся программированию" начинают на нем программировать  . Беспредметное, безосновательное утверждение. QUOTE (zltigo @ May 9 2016, 22:57)  Вот то, что он создавался для обучения программированию - вот это и есть родимое пятно всех "языков ради языка". Ни Си ни Си++, ни тот же Perl не создавались для обучения, они создавались для РАБОТЫ. Языком для обучения он позиционировался в 1990 году, с тех пор практически сразу стал языком для решения практических задач. Его ни в коем случае нельзя сравнивать с C/C++ - совершенно разные возможности и ниши, но если сравнивать с перлом, то сравнение будет не в пользу последнего. QUOTE (zltigo @ May 9 2016, 22:57)  "Мама мыла раму..." ©  . В реальности, все хуже - не далее, как месяц назад очередная утилитка тупо отказалась запускаться вываливаясь с характерными питоновскими воплями  . Утилитка о NXP/Jennic просто командная строка, но зачем то размером 250K и DLL-ок на полмега. За что? Понятия не имею, в чём вы. Программа на питоне - это текстовый скрипт. Для исполнения она требует исполняемой среды. Про какие dll речь, мне не ведомо. Если наводите критику, так делайте это предметно. Конкретно что кривого в питоне, какие косяки в его дизайне. Про Аду не спрашиваю, про неё сам знаю. И Ада - действительно искусственно созданный ЯП по ТЗ МО США. Но питон - нет, у него совершенно другая история и свой путь развития. И питону уже не надо доказывать своё право на существование - он давно это доказал делом. Когда я познакомился с питоном лет 10 назад, так забыл как страшный сон эти sed'ы и awk, и с тех пор все утилиты для себя пишу на питоне, ни разу не пришлось разочароваться. И у всех, кого знаю, кто познакомился с питоном, чем плотнее знакомство, тем выше оценка. Подозреваю, что вы с ним реально почти не знакомы, но пришлось столкнуться с парой образчиков говнокода, отсюда и мнение о языке. Тут можно напомнить, что на сях легко наговнкодить так, что питонам и не снилось. Но это не характеризует сам язык.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
Сообщений в этой теме
amiller Детская ошибка May 2 2016, 06:22 AleksBak А если так:
Кодint16u temp1, temp2;
for (int3... May 2 2016, 07:08 amiller Цитата(AleksBak @ May 2 2016, 10:08) А ес... May 2 2016, 07:16  Сергей Борщ QUOTE (amiller @ May 2 2016, 10:16) После... May 2 2016, 07:24   amiller Цитата(Сергей Борщ @ May 2 2016, 10:24) М... May 2 2016, 07:36    Сергей Борщ QUOTE (amiller @ May 2 2016, 10:36) Ну а ... May 2 2016, 08:09     amiller Цитата(Сергей Борщ @ May 2 2016, 11:09) Д... May 2 2016, 08:21  scifi Цитата(amiller @ May 2 2016, 10:16) Но бо... May 2 2016, 11:30   amiller Цитата(scifi @ May 2 2016, 14:26) Вы буде... May 2 2016, 11:35    AleksBak Цитата(amiller @ May 2 2016, 15:35) В это... May 2 2016, 12:20    GetSmart Цитата(amiller @ May 2 2016, 15:35) В это... May 2 2016, 13:49     Baser Цитата(GetSmart @ May 2 2016, 16:49) Обна... May 2 2016, 16:18     ViKo Цитата(GetSmart @ May 2 2016, 16:49) Обна... May 2 2016, 16:19     Огурцов Цитата(GetSmart @ May 2 2016, 13:49) Хоро... May 2 2016, 16:36     jcxz Цитата(GetSmart @ May 2 2016, 19:49) Код{... May 3 2016, 15:33      GetSmart Цитата(jcxz @ May 3 2016, 19:33) И что в ... May 3 2016, 16:23       zltigo QUOTE (GetSmart @ May 3 2016, 19:23) Искр... May 3 2016, 19:47        GetSmart Цитата(zltigo @ May 3 2016, 23:47) Так чт... May 3 2016, 21:42    Tahoe Цитата(amiller @ May 2 2016, 14:35) Ошибк... May 6 2016, 04:58     amiller Цитата(Tahoe @ May 6 2016, 07:58) 1. Стра... May 6 2016, 06:23      Tahoe Цитата(amiller @ May 6 2016, 09:23) Если ... May 6 2016, 08:32       scifi Цитата(Tahoe @ May 6 2016, 11:32) Еще раз... May 6 2016, 08:45       amiller Цитата(Tahoe @ May 6 2016, 11:32) Еще раз... May 6 2016, 08:58        zltigo QUOTE (amiller @ May 6 2016, 11:58) И в о... May 6 2016, 13:44         amiller Цитата(zltigo @ May 6 2016, 16:44) Опять ... May 6 2016, 14:19          scifi Цитата(amiller @ May 6 2016, 17:19) 1. Ес... May 6 2016, 15:29           Огурцов Цитата(scifi @ May 6 2016, 16:29) Предупр... May 7 2016, 16:57            scifi Цитата(Огурцов @ May 7 2016, 19:57) а не ... May 7 2016, 18:27          Tahoe Цитата(amiller @ May 6 2016, 17:19) 1. Ес... May 6 2016, 16:31           amiller Цитата(Tahoe @ May 6 2016, 19:31) Последн... May 7 2016, 02:52            Tahoe Цитата(amiller @ May 7 2016, 05:52) Предс... May 7 2016, 05:14             amiller Цитата(Tahoe @ May 7 2016, 08:14) Предста... May 7 2016, 05:37              svss Цитата(amiller @ May 7 2016, 11:37) ...
5... May 7 2016, 09:24               zltigo QUOTE (svss @ May 7 2016, 12:24) не полаг... May 7 2016, 10:25              Tahoe Цитата(amiller @ May 7 2016, 08:37) А кро... May 7 2016, 13:47               amiller Цитата(Tahoe @ May 7 2016, 16:47) Так мож... May 7 2016, 14:04                Tahoe Цитата(amiller @ May 7 2016, 17:04) сразу... May 7 2016, 16:06                 amiller Цитата(Tahoe @ May 7 2016, 19:06) Не поня... May 7 2016, 17:33          Сергей Борщ QUOTE (amiller @ May 6 2016, 17:19) 2. Од... May 6 2016, 21:37      halfdoom Цитата(amiller @ May 6 2016, 09:23) Если ... May 9 2016, 06:43       amiller Цитата(halfdoom @ May 9 2016, 09:43) Где-... May 9 2016, 07:54     GetSmart Цитата(Tahoe @ May 6 2016, 08:58) 3. Насч... May 9 2016, 16:00      zltigo QUOTE (GetSmart @ May 9 2016, 19:00) Ещё ... May 9 2016, 16:11 aiwa Вообще-то да, это работа не компилятора, но редакт... May 4 2016, 11:59 aiwa Цитата(amiller @ May 7 2016, 08:37) 2. ..... May 7 2016, 07:59 aiwa Цитата(Огурцов @ May 7 2016, 19:57) а не ... May 7 2016, 20:41 Огурцов вы можете между собой договориться, есть в предпис... May 7 2016, 21:59 aiwa Цитата(Огурцов @ May 8 2016, 00:59) вы мо... May 7 2016, 22:31 zltigo QUOTE (aiwa @ May 8 2016, 01:31) Причем, ... May 8 2016, 03:44 Огурцов Цитата(aiwa @ May 7 2016, 22:31) А о чем ... May 8 2016, 06:05  jcxz Цитата(Огурцов @ May 8 2016, 12:05) о сво... May 8 2016, 06:18   Огурцов > Выбросил 2+3, заменил на 5. Сообщать?
скорее ... May 8 2016, 06:53    jcxz Цитата(Огурцов @ May 8 2016, 12:53) >В... May 8 2016, 13:30     Огурцов Цитата(jcxz @ May 8 2016, 13:30) Каким бо... May 8 2016, 14:53  ViKo Цитата(Огурцов @ May 8 2016, 09:05) о сво... May 8 2016, 06:18   jcxz Цитата(ViKo @ May 8 2016, 12:18) У Кейла ... May 8 2016, 06:32    ViKo Цитата(jcxz @ May 8 2016, 09:32) IAR всё ... May 8 2016, 07:18 ViKo Прочитав тему еще раз, понял, что топикстартер при... May 8 2016, 05:55 amiller Цитата(ViKo @ May 8 2016, 08:55) Прочитав... May 8 2016, 09:07 ViKo Keil
Example1
CODE; generated by Component: ARM Co... May 8 2016, 10:35 aiwa Цитата(Огурцов @ May 8 2016, 09:05) о сво... May 8 2016, 12:13 amiller Цитата(aiwa @ May 8 2016, 15:13) Так он в... May 8 2016, 12:24 aiwa Цитата(zltigo @ May 8 2016, 06:44) Маразм... May 8 2016, 12:29 ViKo И во что же должно продвинуться беззнаковое uint16... May 8 2016, 12:34 aiwa Цитата(amiller @ May 8 2016, 15:24) Вроде... May 8 2016, 12:54 aiwa Цитата(jcxz @ May 8 2016, 16:30) Хмммм...... May 8 2016, 14:27 ViKo Правильно, продвигается до знакового целого. Но по... May 8 2016, 14:37 jcxz Цитата(ViKo @ May 8 2016, 20:37) Правильн... May 8 2016, 16:41  Огурцов Цитата(jcxz @ May 8 2016, 17:41) Ещё раз ... May 8 2016, 18:19   jcxz Цитата(Огурцов @ May 9 2016, 00:19) ещё р... May 9 2016, 08:59 aiwa Цитата(ViKo @ May 8 2016, 17:37) Правильн... May 8 2016, 14:43 ViKo О! Может, топикстартер все же напутал с опреде... May 8 2016, 14:45 amiller Цитата(ViKo @ May 8 2016, 17:45) О! М... May 8 2016, 15:04 aiwa Цитата(ViKo @ May 8 2016, 17:45) О! М... May 8 2016, 15:24 ViKo Почему никто не комментирует листинги от Кейла? Вс... May 8 2016, 15:45 aiwa Цитата(ViKo @ May 8 2016, 18:40) Почему н... May 8 2016, 15:53 ViKo Кейл, он же Кайл, он же Keil (нем.), он же куплен ... May 8 2016, 15:57 scifi Цитата(ViKo @ May 8 2016, 18:57) Кейл, он... May 8 2016, 16:43 jcxz Цитата(ViKo @ May 8 2016, 21:57) Кейл, он... May 8 2016, 17:00 aiwa Цитата(ViKo @ May 8 2016, 18:57) Кейл, он... May 8 2016, 16:20 ViKo Дополню для ясности. У Cortex-M команды - THUMB2 -... May 8 2016, 18:11 ViKo Таки да, операция ~temp1 дает число 0xFFFFFFFE. Во... May 8 2016, 19:42 aiwa Цитата(ViKo @ May 8 2016, 22:42) Таки да,... May 8 2016, 22:52 aiwa Цитата(halfdoom @ May 9 2016, 09:43) Пере... May 9 2016, 11:10 zltigo QUOTE (aiwa @ May 9 2016, 14:10) В резуль... May 9 2016, 11:56  svss Цитата(zltigo @ May 9 2016, 17:56) Если ... May 10 2016, 05:13 halfdoom Цитата(aiwa @ May 9 2016, 14:10) В резуль... May 9 2016, 14:51 scifi Цитата(aiwa @ May 9 2016, 15:41) Вы вопро... May 9 2016, 12:49  jcxz Цитата(scifi @ May 9 2016, 18:49) Было бы... May 9 2016, 16:51 aiwa Цитата(halfdoom @ May 9 2016, 17:51) Если... May 9 2016, 23:30 halfdoom Цитата(aiwa @ May 10 2016, 02:30) наводит... May 10 2016, 04:20  aiwa Цитата(halfdoom @ May 10 2016, 07:20) Ста... May 10 2016, 07:58   scifi Цитата(aiwa @ May 10 2016, 10:58) повторю... May 10 2016, 08:13   halfdoom Цитата(aiwa @ May 10 2016, 10:58) Все дов... May 10 2016, 08:49 aiwa Цитата(scifi @ May 10 2016, 11:13) Код, к... May 10 2016, 09:43
2 страниц
1 2 >
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|