[an error occurred while processing this directive]
Ответ: Кейл С и прототип обработчика прерывания
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Tkach Andre 25 сентября 2002 г. 09:23
В ответ на: А разве не линкер пишет таблицу прерываний? По-моему, прототип не нужен, всё можно написать на асме. отправлено Mik 24 сентября 2002 г. 17:07

С первой частью вопроса я докопался : В прототипе ф-ции нельзя использовать модификаторы interrupt и др. Это треб. кейла.
А солнце прийдётся закатывать вручную, то есть по абсолютному адресу вектора прерывания прийдётся прописать LJMP на процедуру обработчика.
Идеологически здесь неприятность в том что файл С и файл асм друг с другом получаются логически не связанны на уровне компилятора.
Возможен и другой вариант : описать обработчик прерывания в С файле и в его теле писать на асме #pragma asm ... #pragma endasm.
А модификатор interrupt , по моему разумению , нужен для того чтобы компилятор знал что: возврат нужно делать по iret, в таблице вектороов по соотв. номеру необходимо поставить ljmp, ну может ещё выключить какую нибудь оптимизацию при генерации кода обработчика.


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru