Вот еще что вылезло!
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено treumer 25 июля 2003 г. 10:42
В ответ на: Если данные в регистры не влазят, то они через сегмент данных передаются... отправлено Sot 24 июля 2003 г. 14:49

Когда я через заглушку сгенерил код получилось следующее:
Параметры распределились по следуюшим регистрам:
;---- Variable 'key?040' assigned to Register 'DPTR' ----
MOV DPL,R7
MOV DPH,R6
;---- Variable 'dat_buf?041' assigned to Register 'R0' ----
;---- Variable 'flags?042' assigned to Register 'R3' ----

Но когда я вызываю уже "настроенную" ассемблерную процедурку
компилятор генерит:
0084 7E00 R MOV R6,#HIGH common_buffer
0086 7F00 R MOV R7,#LOW common_buffer
0088 7D00 R MOV R5,#LOW common_buffer+08H
008A E4 CLR A
008B FB MOV R3,A

Т.е. использует для 2го параметра не R0, а R5!!!
Как же мне указать в каких именно регистрах должны передаваться данные ?!
Не получится ли так, что после изменения С программы компилер решит вдруг передавать не на R5, а в R4, например!
Хотелось бы ему явно указать какими регистрами пользоватся, а то ведь ассемблерная процедурка ничего не будет знать... :(

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

Ответы



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

E-mail: info@telesys.ru