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

 
 
 
Reply to this topicStart new topic
> Использование регистров в ИАРе, написание функций на асме
ksinet
сообщение Apr 24 2005, 11:53
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 25
Регистрация: 18-04-05
Из: Украина, Черкасы
Пользователь №: 4 269



Некоторые критичные ко времени функции нужно писать на асме. (+ не все можно реализовать на си/си++). Собственно как вызывать с си процедуры написанные на асме понятно, понятна и передача параметров (использую ИАР 3,20 / 4,10 ). Но остается вопрос: какие регистры можно "портить" и незаботится об их восстановлении, а какие нужно обязательно сохранять?
Go to the top of the page
 
+Quote Post
vet
сообщение Apr 24 2005, 20:34
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



Функции могут не заботиться о сохранении значений регистров R0–R3, R16–R23, и R30–R31 (EWAVR_CompilerReference.pdf, с.123).


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
ksinet
сообщение Apr 25 2005, 12:36
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 25
Регистрация: 18-04-05
Из: Украина, Черкасы
Пользователь №: 4 269



Цитата(vet @ Apr 24 2005, 23:34)
Функции могут не заботиться о сохранении значений регистров R0–R3, R16–R23, и R30–R31 (EWAVR_CompilerReference.pdf, с.123).
*


Спасибо.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Apr 26 2005, 06:23
Сообщение #4


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



ksinet, обратите внимание также на то место в описании компилятора, где говорится о передаче функциям аргументов и получении от них результатов (C calling convention).
Хорошо с этим разобравшись (а это не сложно) можно писать эффективные смешанные программы asm/C/EC++ без необходимости инлайновых ассемблерных вставок, которые практически сводят на нет возможность оптимизации и затрудняют переносимость кода.
Кроме того, если Вы пишете на ассемблере обработчик прерывания, то сохранять нужно ВСЕ используемые регистры, не говоря уже о регистре состояния и иногда RAMPZ.
Go to the top of the page
 
+Quote Post
ksinet
сообщение Apr 26 2005, 14:55
Сообщение #5


Участник
*

Группа: Свой
Сообщений: 25
Регистрация: 18-04-05
Из: Украина, Черкасы
Пользователь №: 4 269



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


Спасибо за совет. Обязательно прочитаю.
Насчет инлайна, то я практически никогда его не использую, это черевато многими неприятностями. Сейчас перехожу с КоддВижна на ИАР и поэтому приходится учитывать множество особенностей работы в последнем.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 06:29
Рейтинг@Mail.ru


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