[an error occurred while processing this directive]
Ответ: (+)
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

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

Отправлено SM 04 марта 2003 г. 11:53
В ответ на: а branch and link? отправлено yes 04 марта 2003 г. 11:34

регистр, в котором сохраняется PC - это только для прерываний.

А CALL в С делается вот так:


;----------------------------------------------------------------------
; 145 | hMcBsp[0] = MCBSP_Open(MCBSP_DEV0, MCBSP_OPEN_RESET);
;----------------------------------------------------------------------
MVKL .S2 _MCBSP_open,B5 ; |145|
MVKH .S2 _MCBSP_open,B5 ; |145|
B .S2 B5 ; |145|
MVKL .S2 RL24,B3 ; |145|
MVKH .S2 RL24,B3 ; |145|
MVK .S2 0x1,B4 ; |145|
ZERO .D1 A4 ; |145|
NOP 1
RL24: ; CALL OCCURS ; |145|

то есть в регистр B5 заносится адрес подпрограммы, делается переход на нее. В delay-слотах перехода в B3 заносится адрес возврата. Ну и параметры, передаваемые в подпрограмму (A4 и B4). Внутри подпрограммы адрес возврата (B3) будет сохранен в стеке (в качестве указателя стека используется один из регистров общего назначения - B15), потом, по исполнении подпрограммы восстановлен оттуда и выполнен переход обратно по регистру B3.

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

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


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

E-mail: info@telesys.ru