Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Функциональные объявления

Читайте также:
  1. CTR — показатель эффективности интернет-рекламы, измеряемый как отношение числа нажатий на рекламное объявление (кликов) к числу показов этого объявления.
  2. Анатомо-функциональные особенности.
  3. Влияние миорелаксантов на основные функциональные системы организма и обмен веществ
  4. Дайте определение функционального стиля речи. Назовите функциональные стили речи и перечислите их лексические, синтаксические и жанровые особенности.
  5. Дисгармоничные (дисфункциональные) типы семей
  6. Занятие №15. Функциональные ряды.
  7. Институты безвестного отсутствия и объявления умершим.
  8. Институты безвестного отсутствия и объявления умершим.
  9. Информационные и функциональные уровни обеспечения автоматизированного проектирования систем управления .
  10. К числу компонентов САПР относятся ее функциональные части, а также системы и/или подсистемы.

В C, функция должна быть объявлена для компилятора, чтобы знать, как её вызвать. Объявление может быть сделано следующим образом:

int a_function (intfirst, char * second);

Это означает, что функция берет два параметра: целое число (first) и указатель на символ (second). Функция возвращает значение, целое число.

В общем случае, это единственное что известно компилятору относительно функции. Поэтому, должно способствовать выводу соглашения о вызовах из этой информации.

C и C++ написания

В C++, функция может иметь C или C++ написание. Только функции, написанные на C, могут быть осуществлены на ассемблере.

Далее приведен пример объявления функции на C:

extern "C"

{

int f(int);

}

 

Часто практически совместно использовать файлы заголовка между C и C++. Следующий пример показывает объявление функции написанной на C в C и C++:

 

#ifdef __cplusplus

extern "C"

{

#endif

int f(int);

#ifdef __cplusplus

}

#endif

Сохранение рабочих регистров

AVR регистры CPU разделены на три отдельных части, которые описаны в этой главе.

Рабочие регистры

Любая функция может изменять содержание рабочего регистра. Если функция нуждается в значение регистра после вызова другой функции, оно должно сохраняться в течение этого вызова, например в стеке.

 

Для обоих соглашений о вызовах, следующие 14 регистров могут использоваться как рабочие регистры функций:

R0-R3, R16-R23, и R30-R31

 

Сохраняемые регистры

Сохраняемые регистры наоборот сохраняются вопреки вызовам функций. Любая функция может использовать сохраняемый регистр в своих целях, но должна сохранить прежнее значение до использования и восстанавливать его при выходе функции.

 

Для обоих соглашений о вызовах, следующие сохраняемые регистры используются:

R4-R15 и R24-R27

 

Обратите внимание, что регистраторы R4-R15 могут быть блокированы из командной строки, и использоваться для глобальных регистровых переменных; см. -lock_regs и __regvar.

Специальные регистраторы

Для некоторых регистраторов имеются некоторые предпосылки, которые вы должны рассмотреть:

· указатель вершины стека регистр Y должен всегда указывать на последний элемент стека. В случае прерывания, все ниже точки, на который указывает указатель стека, будет разрушено.

· При использовании -v4 или -v6 опции процессора, регистр RAMPY - указатель на часть стека данных.

· При использовании опции процессора, которая использует любой из регистров EIND, RAMPX, или RAMPZ, эти регистры работают как рабочие регистры.




Дата добавления: 2014-12-19; просмотров: 30 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав