|
0 / 0 / 0
Регистрация: 02.03.2013
Сообщений: 163
|
||||||
Как перевернуть байт в СИ?19.12.2013, 20:03. Показов 26947. Ответов 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 байт ? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется.
Ну как вам?
|
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания
источниках данных и элементов формы(текстовые поля и метки), опирается все
это на технологию событий и мета. . .
|
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml,
в чате форсили функторы модулей как суперфичу.
Пытаясь отдуплить концепт, наткнулся на тутор с простым примером.
А главный принцип обучения от. . .
|
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
|
|
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
|
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства.
Жизнь действительно предъявляет каждому. . .
|
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
|
Лето уходит
kumehtar 17.08.2026
|