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

 
 
> Сдвиг в бит С
*Roma*
сообщение Jul 22 2005, 08:50
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 24
Регистрация: 17-06-05
Пользователь №: 6 089



Ктонибудь когда нибудь организовывал на С на AVR асемблерную операцию сдвига в бит C (Cerry) и возможно ли это вообще на С ???
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
d__
сообщение Jul 26 2005, 09:27
Сообщение #2


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

Группа: Свой
Сообщений: 197
Регистрация: 26-08-04
Пользователь №: 548



А кто мешает использовать переменную с полями битов:
void fun1(void)
{
}
void fun2(void)
{
}
void fun3(void)
{
}

void main(void)
{
struct myflags{
char flag1 :1;
char flag2 :1;
char flag3 :1;
}m;
m.flag1=1;
m.flag2=m.flag3=0;
if(m.flag1!=0)fun1();
if(m.flag2!=0)fun2();
if(m.flag3!=0)fun3();
}
Разворачивается буквальнов в три команды и никаких сдвигов:
\ 00000008 FB80 BST R24, 0
\ 0000000A F40E BRTC ??main_0
\ 0000000C .... RCALL fun1
21 if(m.flag2!=0)fun2();
\ ??main_0:
\ 0000000E FB81 BST R24, 1
\ 00000010 F40E BRTC ??main_1
\ 00000012 .... RCALL fun2
22 if(m.flag3!=0)fun3();
\ ??main_1:
\ 00000014 FB82 BST R24, 2
\ 00000016 F40E BRTC ??main_2
\ 00000018 .... RCALL fun3
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 14:51
Рейтинг@Mail.ru


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