|
Когда я через заглушку сгенерил код получилось следующее:
Параметры распределились по следуюшим регистрам:
;---- 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