Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Как в WinAVR разместить переменную в регистре?
Отправлено
IgorAVR
23 апреля 2009, г. 23:03
register unsigned char counter asm("r4"); - не помогает!!!
То есть если пишем код:
register unsigned char counter asm("r4");
counter=5;
temp=counter;
то в дизасме видно, что переменную в r4 он не создаёт и естественно не присваивает r4=5 , а просто в temp загружает 5.
Составить ответ
|
Вернуться на конференцию.
Ответы
Дык ты работай в Асме с переменными в стеке
-
ДжЫуДжЫтцу
(24.04.2009, 00:31:49
217.118.66.31
,
пустое
)
Я надо работать в GCC, а прерывание должно обрабатываться на асме. То есть как из Си в асм переменную передать?
-
IgorAVR
(24.04.2009, 00:49:5
92.100.48.211
,
пустое
)
Не понял. Есть вектор прерывания - устанавливайте его на Ваш код, написанный на ассемблере.
-
gcc_user
(24.04.2009, 12:24:18
144.206.181.131,144.206.181.53
, 219 байт)
Это всё понятно, только не понятно как в эту Асмовую вставку передать данные из Си.
-
IgorAVR
(24.04.2009, 14:28:26
92.100.44.65
,
пустое
)
А зачем насиловать гнусь?
-
Artem-1.6E-19
(23.04.2009, 23:28:16
212.115.235.8
, 242 байт)
Мне надо потом с этими переменным из асма работать, вот и нужно так...
-
IgorAVR
(23.04.2009, 23:37:30
92.100.48.211
,
пустое
)
Тогда смотри как определить функцию, которая вызывается с передачей пераметров через регистры.
-
Artem-1.6E-19
(24.04.2009, 02:04:6
212.115.235.8
,
пустое
)
А подробней можно...
-
IgorAVR
(24.04.2009, 02:13:52
92.100.48.211
,
пустое
)
Погуглите на gcc fastcall ARM
-
Artem-1.6E-19
(24.04.2009, 02:37:4
212.115.235.8
, 219 байт)
Нет никакого fastcall в WinAVR, насколько я понял он есть только в i386. Тем более...
-
IgorAVR
(24.04.2009, 10:20:3
92.100.44.65
, 252 байт)
Т.е. Вы хотите вообще, чтобы gcc не использовал какой-то регистр?
-
gcc_user
(24.04.2009, 12:29:24
144.206.181.131,144.206.181.53
, 112 байт)
Да, борюсь за такты в обработчике, т.к. обработчик вызывается часто (шим) и переменная не одна.
-
IgorAVR
(24.04.2009, 14:16:42
92.100.44.65
,
пустое
)
Может компилятор старый, у меня gcc 4.4.0 , вроде, нормально все сделал:
-
gcc_user
(24.04.2009, 16:17:32
144.206.181.131,144.206.181.53
, 451 байт)
Или ближе к Вашему примеру:
-
gcc_user
(24.04.2009, 16:51:47
144.206.181.131,144.206.181.53
, 554 байт)
забыл скопировать объявление глобальной переменной :-)
-
gcc_user
(24.04.2009, 16:54:25
144.206.181.131,144.206.181.53
, 451 байт)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
что получится, если сложить 4 и 4 ?
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru