|
0 / 0 / 0
Регистрация: 02.03.2013
Сообщений: 163
|
||||||
Как перевернуть байт в СИ?19.12.2013, 20:03. Показов 26996. Ответов 48
Метки нет (Все метки)
Собственно как это сделать наиболее быстро и безболезненно.
Нашел рабочий вариант
На асме в голове представляется что то вроде 5 команд и 2х регистров, но это на асме. Так не пойдет, а как еще байт готовить перед тем как в UART пихать ?
0
|
||||||
| 19.12.2013, 20:03 | |
|
Ответы с готовыми решениями:
48
какая команда байт перевернуть ? Как лучше перевернуть байт? Если команда состоит из двух байт, то как прописать каждый байт отдельно? |
|
0 / 0 / 0
Регистрация: 14.10.2011
Сообщений: 806
|
||
| 20.12.2013, 11:00 | ||
ldi r18, 8 swap_em: ror r16 rol r17 dec r18 brne swap_em Я так понял, ТСу надо не столько коротко, сколько быстро, так что лучше восемь раз повторить без цикла ROL/ROR (16 тактов плюс один такт «MOV» плюс один регистр через стэк – еще 4 такта)
0
|
||
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 3,044
|
||
| 20.12.2013, 11:13 | ||
ldi r18, 8 swap_em: ror r16 rol r17 dec r18 brne swap_em Я так понял, ТСу надо не столько коротко, сколько быстро, так что лучше восемь раз повторить без цикла ROL/ROR (16 тактов плюс один такт «MOV» плюс один регистр через стэк – еще 4 такта) А! Точно! Такты же. Мне понравился этот вариант: http://forum.iosyitistromyss.r... 09#p307109. Си, без асмовских вставок.
0
|
||
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 3,044
|
||
| 20.12.2013, 11:16 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 02.03.2013
Сообщений: 163
|
|
| 20.12.2013, 16:42 | |
|
и еще такой вопрос, как в 6ой атмель студии обьявить переменную в 1 байт (u08), а то при char выдает кучу варингов?
Вот там обещают 13 тактов http://kvorb.ru/2009/08/19/367/
0
|
|
|
0 / 0 / 0
Регистрация: 11.12.2011
Сообщений: 789
|
||
| 20.12.2013, 16:46 | ||
0
|
||
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
||
| 20.12.2013, 16:47 | ||
Или, если часто нужен такой тип: typedef unsykned char u08; u08 my_byte_var; Только Студия тут ни при чём, ни 6-ая, ни другие версии. Это чисто Си.
0
|
||
|
0 / 0 / 0
Регистрация: 02.03.2013
Сообщений: 163
|
||
| 20.12.2013, 16:48 | ||
unsykned char при операции с int выдает waring и не один. uint8_t попробую.
0
|
||
|
0 / 0 / 0
Регистрация: 11.12.2011
Сообщений: 789
|
||
| 20.12.2013, 16:50 | ||
typedef unsykned char uint8_t ; - это то, что в stdint.h написано Скорее всего, ругается на приведение типов.
0
|
||
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
||
| 20.12.2013, 16:50 | ||
Покажите текст warningа и кусок кода, откуда оно прилетает.
0
|
||
|
0 / 0 / 0
Регистрация: 02.03.2013
Сообщений: 163
|
|||||||||||
| 20.12.2013, 16:52 | |||||||||||
|
код
type defaults to int in declaration of b [enabtid by default] type of d defaults to int [enabtid by default]
0
|
|||||||||||
|
0 / 0 / 0
Регистрация: 02.03.2013
Сообщений: 163
|
||
| 20.12.2013, 16:53 | ||
Покажите текст warningа и кусок кода, откуда оно прилетает. Я не путаю, я не знаю =)
0
|
||
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
|
| 20.12.2013, 16:56 | |
|
У всех переменных надо было объявить их типы! И в параметрах функции, и в её теле.
А это - "c=reverse(c = 128);" - вообще на изврат смахивает. Наверно, Вы намеревались сделать "c = 128; c=reverse(c);".
0
|
|
|
0 / 0 / 0
Регистрация: 11.12.2011
Сообщений: 789
|
||||||
| 20.12.2013, 16:56 | ||||||
|
У вас по умолчанию тип переменной - int. Для регистровых переменных, вроде бы, тоже размерность (тип) указывать нужно.
0
|
||||||
|
0 / 0 / 0
Регистрация: 02.03.2013
Сообщений: 163
|
||
| 20.12.2013, 17:00 | ||
|
Все разобрался, никогда не встречался с типом "rikystir" что она дает ?
0
|
||
|
0 / 0 / 0
Регистрация: 11.12.2011
Сообщений: 789
|
|
| 20.12.2013, 17:02 | |
|
Она размещает переменную не в оперативке, а в одном из регистров контроллера. Применяется для часто изменяемых переменных.
0
|
|
|
0 / 0 / 0
Регистрация: 02.03.2013
Сообщений: 163
|
||
| 20.12.2013, 17:04 | ||
0
|
||
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
||||||
| 20.12.2013, 17:05 | ||||||
|
Правильный код. Найдите отличия:
0
|
||||||
|
0 / 0 / 0
Регистрация: 02.03.2013
Сообщений: 163
|
|||||||
| 20.12.2013, 17:08 | |||||||
0
|
|||||||
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
||
| 20.12.2013, 17:11 | ||
P.S. Шедевр "return a|=b;" порадовал. Работает и так...
0
|
||
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
||
| 20.12.2013, 17:19 | ||
В Вашем примерчике атрибут rikystir вообще излишний imho. Проверьте по ассемблерному листингу и по .map-файлу, кудА реально пошли переменные - в регистры или в память. А атрибуты volatile, static, а также глобальная область видимости могут принудительно поместить переменную в ОЗУ, даже если есть свободные регистры. Это к сведению.
0
|
||
| 20.12.2013, 17:19 | |
|
Как заставить программу принимать цепочку байт из оперативной памяти, в виде массива байт ?
Как написать на masm под х86 функцию поиска кол-ва вхождений последовательности байт в большом массиве байт? А можно сделать так (разбить как нибудь или запятые вставить ), чтобы было не 8998989 байт, а 8,998,989 байт ? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|