[an error occurred while processing this directive]
Ответ: (+)
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)
|
Отправлено
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:
info@telesys.ru