Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Посоветуйте avr asm макрос для сравнения 32-разрядного числа с константой! Как-то плохо выходит с отрицательными числами.
Отправлено
maik-vs
05 сентября 2008 г. 13:59
Составить ответ
|
Вернуться на конференцию
Ответы
Тут макрос будет слишком неуклюжим - либо привязанным к конкретным регистрам, либо имеющим слишком много параметров. Так как команды сравнения с константой
и переносом
нет, то придется делать через дополнительный регистр, и это лучше оформить не макросом, а подпрограммой - в AVRASM2 очень гиморно подставлять разные НОМЕРА регистров от базы
-
MBedder
(05.09.2008 15:18:45
80.92.96.19
,
пустое
)
"Так ото ж" (с) ...
-
maik-vs
(05.09.2008 15:42:59
85.172.43.222
,
пустое
)
Сделай вот так - хоть макросом, хоть подпрограммой - и не парься -->
-
MBedder
(05.09.2008 15:47:43
80.92.96.19
,
пустое
,
ссылка
)
Придёццо... r20 то можно подержать в стеке, пока буду сравнивать. Некошерно выглядят эти ldi...
-
maik-vs
(05.09.2008 16:01:7
85.172.43.222
,
пустое
)
Без ldi можно только разрушающим вычитанием - cpi+sbci+sbci+sbci - на сохранение/восстановление трех убитых регистров уйдет 12 тактов, а на мои ldi - только 3 такта
-
MBedder
(05.09.2008 16:17:25
80.92.96.19
,
пустое
)
+ то что неулюже, но имхо, гораздо разумнее сравнение заминить на вычитание , благо вычитание с переносом имеется.....
-
Aleksey75
(05.09.2008 15:24:20
79.140.17.147
,
пустое
)
Зачем? Есть и сравнение с переносом - СРС, и она одинаково успешно сравнивает как положительные, так и отрицательные значения, т.к. выставляет не только Z и C, но и все остальные нужные флаги
-
MBedder
(05.09.2008 15:32:36
80.92.96.19
,
пустое
)
:) на вкус и цвет, но нужны дополнительные регистры ....... в моём случае можно обойтись стеком...
-
Aleksey75
(05.09.2008 15:40:27
79.140.17.147
,
пустое
)
Нужен один-единственный дополнительный регистр(+)
-
MBedder
(05.09.2008 15:46:31
80.92.96.19
, 208 байт)
:)
-
Aleksey75
(05.09.2008 15:48:0
79.140.17.147
,
пустое
)
а что плохого? SUBI и SBCI рулят..
-
Aleksey75
(05.09.2008 14:09:26
79.140.17.147
,
пустое
)
есть CPI. Написал .IF byte4(@4) < $80 [ для положительной константы] .ELSE [ для отрицательной]. Похоже, короче не выйдет...
-
maik-vs
(05.09.2008 14:34:17
85.172.43.222
,
пустое
)
ну никуя себе асм...... а CPI тот же уй только в профиль что и вычитание...
-
Aleksey75
(05.09.2008 14:39:45
79.140.17.147
,
пустое
)
Только не вычитает:)
-
Quasy
(05.09.2008 14:50:2
192.168.0.207,80.243.9.34
,
пустое
)
точнее будет результата не даёт, а вычитать вычитает...
-
Aleksey75
(05.09.2008 15:05:21
79.140.17.147
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 89:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru