Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Использование регистров в ИАРе
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
ksinet
Некоторые критичные ко времени функции нужно писать на асме. (+ не все можно реализовать на си/си++). Собственно как вызывать с си процедуры написанные на асме понятно, понятна и передача параметров (использую ИАР 3,20 / 4,10 ). Но остается вопрос: какие регистры можно "портить" и незаботится об их восстановлении, а какие нужно обязательно сохранять?
vet
Функции могут не заботиться о сохранении значений регистров R0–R3, R16–R23, и R30–R31 (EWAVR_CompilerReference.pdf, с.123).
ksinet
Цитата(vet @ Apr 24 2005, 23:34)
Функции могут не заботиться о сохранении значений регистров R0–R3, R16–R23, и R30–R31 (EWAVR_CompilerReference.pdf, с.123).
*


Спасибо.
IgorKossak
ksinet, обратите внимание также на то место в описании компилятора, где говорится о передаче функциям аргументов и получении от них результатов (C calling convention).
Хорошо с этим разобравшись (а это не сложно) можно писать эффективные смешанные программы asm/C/EC++ без необходимости инлайновых ассемблерных вставок, которые практически сводят на нет возможность оптимизации и затрудняют переносимость кода.
Кроме того, если Вы пишете на ассемблере обработчик прерывания, то сохранять нужно ВСЕ используемые регистры, не говоря уже о регистре состояния и иногда RAMPZ.
ksinet
Цитата(IgorKossak @ Apr 26 2005, 09:23)
ksinet, обратите внимание также на то место в описании компилятора, где говорится о передаче функциям аргументов и получении от них результатов (C calling convention).
Хорошо с этим разобравшись (а это не сложно) можно писать эффективные смешанные программы asm/C/EC++ без необходимости инлайновых ассемблерных вставок
....
*


Спасибо за совет. Обязательно прочитаю.
Насчет инлайна, то я практически никогда его не использую, это черевато многими неприятностями. Сейчас перехожу с КоддВижна на ИАР и поэтому приходится учитывать множество особенностей работы в последнем.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.