реклама на сайте
подробности

 
 
> Битовые поля vs битовые маски, Что лучше для эмбеддера?
sigmaN
сообщение Apr 17 2008, 21:05
Сообщение #1


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Доброго времени суток.

Битовые поля - кто за, кто против??

Да, знаю, что задаю в принципе извечный вопрос, однако ответа толкового в Интернете не нашел..
Кто-то говорит, что они помогают экономить память, кто-то - что эффективнее or'ить xor'ить и and'ить используя битовые маски и операции сдвига. Типа у bitfield overhead некий появляется, как плата за удобочитаемость....

Лично я склоняюсь к битовым маскам. Так мне привычнее и кажется, что для регистра лучше задефайнить что-то типа
#define BIT0 0x001
. . .
#define BIT15 0x8000
#define REGISTERx (*(volatile unsigned long *)(0x00D00))

а потом ставить биты REGISTERx|=BIT0+BIT3+BIT7;
или REGISTERx|=1<<7; //Ставим бит 7


Во всех примерах Техаса регистры закручены в битовые поля, они ссылаются друг на друга, адреса в линкер .cmd файле и т.д. и т.п.
Это же ужас! И никакой удобочитаемости это особо не добавляет. Часа два ушло у меня, чтобы толком разобраться что куда и откуда линкуется.
Неужели это всё может превзойти старые добрые методы?

Я всё-таки переделал на свой лад.
Потом задумался, а может зря... smile.gif Может особо ничего и не выиграл ))
Оперативка очень важна. Иду впритык, каждый байт на счету.


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sigmaN
сообщение Apr 18 2008, 09:34
Сообщение #2


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Отлично! Значит правильно я сделал - сейчас работаю именно с периферией.
Цитата
Также часто необходимо просто присвоить всему регистру начальное значение, и это тоже невозможно при использовании битовых полей - приходится битовое поле заворачивать в union и в итоге писанины получается намного больше.

Вот вот, я когда на это всё посмотрел в техасовских примерах, сразу понял, что это не самое красивое решение.
Цитата
Например, у того же техасовского TMS320C6x есть такая замечательная инструкция EXT

Гляну как у нас на 28мых с этим. Накрайняк макрос забить с ассемблерной вставкой и можно даже вручную кое-что оптимизировать.

Всем спасибо за ответы a14.gif


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
DMax
сообщение Apr 18 2008, 20:02
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 161
Регистрация: 19-01-08
Из: Питер
Пользователь №: 34 234



Цитата(sigmaN @ Apr 18 2008, 13:34) *
Гляну как у нас на 28мых с этим. Накрайняк макрос забить с ассемблерной вставкой и можно даже вручную кое-что оптимизировать.


Ты того - с ассемблерными вставками поосторожней! Любая ассемблерная вставки приводит к тому, что компилятору приходится сбрасывать оптимизатор после того, как он наткнулся на это вставку. Гораздо лучше для этих целей использовать intrinsic'и, если они есть.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- sigmaN   Битовые поля vs битовые маски   Apr 17 2008, 21:05
- - DMax   Цитата(sigmaN @ Apr 18 2008, 01:05) Неуже...   Apr 17 2008, 22:26
|- - Major   Позволю заметить. Стандарт не говорит каким будет ...   Apr 18 2008, 04:02
- - blackbit   Цитата(sigmaN @ Apr 18 2008, 01:05) Лично...   Apr 18 2008, 07:42
- - Сергей Борщ   Цитата(sigmaN @ Apr 18 2008, 00:05) Битов...   Apr 18 2008, 08:43
- - blackbit   Это да, если число изменяемых бит больше двух, то ...   Apr 18 2008, 08:55
|- - sigmaN   Цитата(DMax @ Apr 18 2008, 23:02) Ты того...   Apr 19 2008, 08:15
|- - Сергей Борщ   Цитата(sigmaN @ Apr 19 2008, 11:15) Покор...   Apr 19 2008, 09:47
|- - zltigo   Цитата(sigmaN @ Apr 19 2008, 10:15) как-ж...   Apr 19 2008, 10:02
|- - Сергей Борщ   Цитата(zltigo @ Apr 19 2008, 13:02) Втора...   Apr 19 2008, 10:39
||- - DMax   Цитата(Сергей Борщ @ Apr 19 2008, 14:39) ...   Apr 19 2008, 12:01
|- - sigmaN   Цитата(zltigo @ Apr 19 2008, 13:02) А что...   Apr 19 2008, 11:27
|- - zltigo   Цитата(sigmaN @ Apr 19 2008, 13:27) Или ж...   Apr 19 2008, 11:37
- - sigmaN   Да суть-то я понимаю, почему они бьют ему ниже поя...   Apr 19 2008, 12:18


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th June 2025 - 11:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01428 секунд с 7
ELECTRONIX ©2004-2016