Перейти к содержанию
    

С чего Вы взяли? Просто пример _Bool наглядно показывает несуразности в представлении данных

Несуразности возникают только в сознании :), когда путают переменную типа bool и операцию с битами. ЛЮБАЯ ПЕРЕМЕННАЯ - это одна или несколько ячеек памяти, а потому быть тождественной с битом она принципиально не может. А если нужны операции с битами, то это делается не с помощью bool-типа, а с помощью побитово расписанной структуры. Например:

struct mystruct
  bool       a : 1;
  bool       b : 1;
  bool       c : 1;
  bool       d : 1;
  bool       e : 1;
  bool       f : 1;
  bool       g : 1;
  bool       h : 1;
) flag;

Вот тут уже все становится ясно и компилятору, и процессору, и программисту - видно, что в памяти ассигнован блок в один байт (8 бит), из которого велено таскать биты.

 

В этом виноват компилятор. В том, что процессор один бит из памяти достать-таки может, а компиляторописатели не могут обеспечить автоматическое размещение однобитовых переменных ...

Ни у одного процессора в мире нет в памяти однобитных переменных. И это уже потому, что память побитно не адресуется. Однако компиляторы обычно предоставляют пользователям удобные способы работы как с битами, так и с битовыми полями (см. мою предыдущую реплику). Однако надо понимать, что делается это "через ухо", т.е. компилятор достает слово памяти целиком, а потом вырезает из него нужные биты. Модификация бита стоит еще дороже - сначала процессор прочитывает целиком слово памяти, к которому этот бит относится, при помощи операций or и and модифицирует в нем нужный бит или группу битов, а затем записывает модифицированное слово обратно в память.

Инструкции ряда микропроцессоров (и AVR в том числе) позволяют модифицировать отдельные биты в собственных регистрах и портах, только в этом случае битовые операции над ними реализуются эффективно. Поэтому битовые флаги лучше всего держать в регистрах, а не в памяти. Во всех же остальных случаях, выгоднее не экономить на спичках, а заводить переменную bool типа. Такая кодировка действительно оказывается избыточной, зато ее применение компенсируется максимально высокой скоростью использования.

Можно с полным основанием считать, что тип bool является атрибутом оптимизации как по скорости, так и по объему кода, когда как его недостаток состоит лишь лишнем расходе памяти.

Изменено пользователем Xenia

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ни у одного процессора в мире нет в памяти однобитных переменных.

Ну, вообще-то у 51-го ядра есть Bit Addressable Area и набор команд для работы с ней.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Благодаря удобству программирования

Целый зверинец интерфейсов, соответственно программаторов, наплевательское отношение старых интерфейсов программирования...

Редко у кого с программированием обстоит хуже, чем у AVR.

, отладки,

Как и у всех.

схемотехнике,

Оооооо! А что это?

 

 

 

удобные способы работы как с битами, так и с битовыми полями (см. мою предыдущую реплику). Однако надо понимать, что делается это "через ухо", т.е. компилятор достает слово памяти целиком, а потом вырезает из него нужные биты. Модификация бита стоит еще дороже - сначала процессор прочитывает целиком слово памяти, к которому этот бит относится, при помощи операций or и and модифицирует в нем нужный бит или группу битов, а затем записывает модифицированное слово обратно в память.

Лениво было отвечать на предыдущее творение, но понятия организации доступа к памяти у Вас осталить на уровне восьмибитовиков, как минимум доступ к единицам менее ширины шины RAM и имеет место быть в обязательном порядке и для сборки из узкой шины памяти процессор не использует никаких специальных команд - это проблема контроллера памяти.

Можно с полным основанием считать, что тип bool является атрибутом оптимизации как по скорости, так и по объему кода, когда как его недостаток состоит лишь лишнем расходе памяти.

А хоть немного почитать топик и подумать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А хоть немного почитать топик и подумать?

 

А что, разве АРМы превосходят АВРы в том, что биты поштучно из памяти таскают? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Разговор как всегда уходит в сторону, о чем не забывают напоминать некоторые участники, особенно хорошо это получилось у Ксении, душевно так и логично.

И так по-порядку.

Самый первый пост от IGK навеян просто грустью по поводу прошедшей юности!!! Старые лохматые джинсы, в которых было так удобно тогда, а что сейчас...? - штанишки просто стали просто малы! Метания в рядах АВР-пользователей понятны, грустно прощаться с полюбившейся платформой.

Да мы вырасли на AVR-ках и сейчас на фоне новых требований к продукции разные там интерфейсы, GUI и т.д мощности процессора, надо это признать не хватает. Конечно есть устройства в которых ничего этого не требуется и естественно AVR будет жить, хотя бы как AtX _Mega (думаю по новому техпроцессу устройства получаются конкурентнее классики, поэтому такой соотношение цен на старые и новые модели) и нас просто плавно пытаются перевести на новую микруху. Эх раньше бы все это и не было бы такого разговора сейчас переходить на что то или нет. Например в рядах ПИК-поклонников такого метания нет, там все спокойно, вовремя появился PIC24, dsPIC30, dsPIC33, а теперь и PIC32.

 

Может быть нам (АВР-пользователям ) повезло меньше чем ПИК-пользователям?

 

Попробую дать ответ в следующем посте. И так, куда движется мир?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может быть нам (АВР-пользователям ) повезло меньше чем ПИК-пользователям?

Точно. Между AVR и AVR32 не хватает AVR16.

После изучаемого в стандартном курсе 8080 (и нашего 580) я от AVR просто тащился.

Пока не потрогал MSP.

Теперь любое упоминание об изделиях атмела вызывает кислую гримасу на лице.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А что, разве АРМы превосходят АВРы в том, что биты поштучно из памяти таскают? :)

Например, кортексы могут адресовать единственный бит в памяти :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да мы вырасли на AVR-ках

 

Вы выросли. Вот и мечетесь :) Я, например, к моменту первого ознакомления с AVR (в районе 2000ного года) очень плотно работал с PowerPC (не в микроконтроллерном варианте). Так что плотное пересаживание на восьмибитные камни для меня было серьезным даунгрейдом :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

но вот время реакции на событие у авр несколько сотен наносекунд, а ваше арм такое разве может?

 

 

время загрузки у авр микросекунды, а ваше арм такое разве может?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да мы вырасли на AVR-ках и сейчас на фоне новых требований...

Кто это "мы"? :biggrin:

 

Или, куда делись те, кто вырос на К580, Z80 и AT89S.. (или i4004)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я, например, к моменту первого ознакомления с AVR (в районе 2000ного года) очень плотно работал с PowerPC (не в микроконтроллерном варианте). Так что плотное пересаживание на восьмибитные камни для меня было серьезным даунгрейдом :)

А до этого были и Z80 (восьмибитовик?), и MC680х0?

Вам было не привыкать. :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Или, куда делись те, кто вырос на К580, Z80 и AT89S.. (или i4004)?

Никуда не делись.

Выросли...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А до этого были и Z80 (восьмибитовик?), и MC680х0?

 

А еще был K580 (факультативно, но результативно - кличку я еще в те времена заработал) и PDP-11 (до Z80). Так что и там даунгрейд :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

но вот время реакции на событие у авр несколько сотен наносекунд, а ваше арм такое разве может?

время загрузки у авр микросекунды, а ваше арм такое разве может?

:)

А что, разве АРМы превосходят АВРы в том, что биты поштучно из памяти таскают? :)

Любые 16/32 бит контроллеры "таскают" не так, как вы живописали по ширине шины, а в том числе и побайтно.

А подумать это относилось конкретно к тому, в ответ на что было написано, а не по поводу Ваших шинных размышлизмов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пока не потрогал MSP.

Теперь любое упоминание об изделиях атмела вызывает кислую гримасу на лице.

А я вот видел людей, которые с MSP пересели на AVR и дико плевались от MSP. Кстати, в том числе и от их хлипкости. Так что всётаки это сугубо субъективно всё. Я, от MSP, никакого экстаза не получил что-то.

Ни система команд, ни переферия, ни наладка чёто впечатления не произвела. Прорывов в производительности тоже не ощутил. Короче те же грабли - вид сбоку. Тот же M16 круче на порядок. Сейчас ещё пикоманы подтянутся. со своими DS и 32-ыми.

 

Конечно, каждый камень свою нишу занимает, и есть неочевидные применения. Так например тот же сименс SC186 до сих пор широко применяется. Хот тоже как то мало смысла в этом видится. То есть просматриваются шкурные, корпоративные и прочие интересы. Думаю что TI принадлежит к компаниям, которые "продавят" на рынок любой камень. А столь малая ниша MSP как раз указывает на слабость решения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...