![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| cardinal |
|
||||||||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 2 Всего: 99 |
то есть есть строка
А потом везде в программе она используется так
То есть присваивается значение 0b10000000, а мне нужно прописать обратный порядок битов, то есть 0b00000001 (так для любого значения). То есть что-нибудь типа
ищу, чтобы я как и раньше писал
а присваивалось значение 0x01... Подскажите плиз... -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
||||||||
|
|||||||||
| comcon1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 11.6.2005 Где: Москва ДАС-МГУ Репутация: 12 Всего: 17 |
чисто на уровне препроцессора не Знаю, но там есть операции в 3-4 действия.
http://www-graphics.stanford.edu/~seander/...tReverseObvious Это сообщение отредактировал(а) comcon1 - 26.1.2010, 21:44 |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
Циклический сдвиг битов типа такого?
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 2 Всего: 99 |
Это не изменит порядок битов... comcon1, спасибо, на я поковырявшись нашел такой прикольный вариант:
Добавлено через 3 минуты и 25 секунд Осталось додумать как это в данном случае (с портом P2) в define добавить... -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| 17dufa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 2.3.2006 Репутация: 3 Всего: 5 |
cardinal, боюсь что оставить запись в виде Port = 0x80; можно единственным образом - создать класс для порта и перегрузить оператор =, но подозреваю что Ваш компилятор такое не потянет.
|
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Если компилятор плюсовый, то можно через метапрограмирование (template'ы). Будет чисто compile-time конструкция
|
|||
|
||||
| NewDima |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: нет Всего: 12 |
xvr,
|
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Это сообщение отредактировал(а) xvr - 27.1.2010, 21:19 |
|||
|
||||
| cardinal |
|
||||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 2 Всего: 99 |
Да, я тоже думаю, что самый простой вариант это прошариться по программе и везде заменить
на
То есть ничего элегантного с помощью define пока не получается... -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
||||
|
|||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
С define не получится, а с классом с перегруженным оператором operator= получится (это если С++) |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 2 Всего: 99 |
А я пока не уверен надо ли это... То есть из-за такой ерунды на данном этапе разработки такую хреновину городить
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| NewDima |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: нет Всего: 12 |
xvr, это я понял (я про код), но как использовать это в рли lvalue?
|
|||
|
||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Для этого нужен другой класс (17dufa уже озвучивал)
|
||||
|
|||||
| NewDima |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: нет Всего: 12 |
xvr, ну с перегрузкой оператора то и так ясно, я подумал, может что другое =)
|
|||
|
||||
| serg76 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 19.3.2008 Репутация: нет Всего: нет |
или в цикл |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 2 Всего: 99 |
serg76, если честно не очень понимаю, что делает этот код...
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Это 'код' разворачивает побитно переменную 'i' в переменную 'b'. Делает он это на ассемблере единственного реально существующего в мире процессора, так что все поголовно должны знать его ассемблер как 'отче наш' С исходным вопросом он конечно не имеет ничего общего, но зато 'ассемблер - это круто!' |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
там скрыто используется флаг. Если не ошибаюсь, получается два (круговых) стека, итерационо с одного справа сбрасывается бит во флаг, и с флага запихивается слева в другой, (а с другого опять через флаг в первый, но это уже вне задания) Т.е. после проведения операции оба байта будут содержать "зеркальное представление" другого, хотя для законченности не хватает в конце еще одной инструкции rcr i,1 Добавлено через 46 секунд |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 2 Всего: 99 |
А тогда ясно. Я просто подумал что чисто командами там муть написана Добавлено через 40 секунд xvr, заметь что про флаг ты ничего не сказал (и наверно даже не подозревал) -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
сильно сомневаюсь, чтоб xvr не знал о флагах дело в том что в асме фактически все операции взаимодействуют через флаги и логика команд неподготовленных программистов ЯВУ легко поставит в затруднение. Это сообщение отредактировал(а) mes - 2.2.2010, 01:16 |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 2 Всего: 99 |
Ничего очевидного тут нет. Да и вообще у меня MSP430 мк, у которого хрен знает какие команды и уж тем более, как там дело обстоит с флагами. То есть пока использование в моем случае под вопросом (руки пока не доходят проверить). Сишными командами думаю все таки решить, есть одна идейка... -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
очевидно тем, кто имел дело с асмом так же как Си`шникам конструкция i+=5; - с ходу и не понятно чем она ставит в тупик остальных ну про перестановку вроде бы Вы нашли решение (и даже не одно) , а в чем сейчас загвоздка ? нельзя ли мини пример ? чтоб понять, что из чего должно получиться .. |
|||
|
||||
| serg76 |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 19.3.2008 Репутация: нет Всего: нет |
да с командами совсем плохо
код был написан на СВ6 имхо судя по командам проще биты по условию выставлять |
||||
|
|||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 2 Всего: 99 |
Нет времени, с железом разбираюсь Я через недельку отвечу, т.к. тогда новое железо будет готово и я перейду к программированию... -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 2 Всего: 99 |
Итак пример из жизни. Есть два чипа, которые обмениваются информацией при помощи одного порта (8 бит). Но вот незадача - соединения идут крест на крест если посадить оба чипа одной стороне платы. Есть три решения: развести крест на крест (меняя сторону), посадить элементы на разные стороны платы или просто развернуть порядок битов в софте. Я выбрал третье решение, т.к. крест на крест это несуперское решение (общее правило: избегать перекрещивание для того, чтобы сигналы друг друга не портили), а если сажать чипы на разные стороны, то это геморр при сборке платы. -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
как я понял у каждого чипа своя копия софта?. тогда делаете макрос типа SEND(value) и для софта каждого чипа определяете его нужным образом. тoгда не возникнет проблем и в дальнейшем , если вдруг вместо реверсного представления битов придется использовать некое другое (например если вынуждены будете пользовать другую развертку соединения чипов). Вместо макроса можно использовать функцию - вынести ее определения в разные файлы и для каждого чипа подключать нужный. P.S. в любом случае естественно придется полазить в проге и заменить все старые операции на новый макрос.. Это сообщение отредактировал(а) mes - 12.2.2010, 20:37 |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 2 Всего: 99 |
Нет у одного из чипов софт не поменять. Я решил функцию сделать...
Да, это я как раз с сделал. Все завелось с пол оборота. -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |