[an error occurred while processing this directive]
|
Но сначала аккуратно замените в приведенном Вами ассемблерном куске B14 на B6, A15 на A9, т.к. регистры B6, A9 не используются.
Теперь сохранение регистров.
Делается это так.
STW B3,*B15--[1]
STW B10,*B15--[1]
STW B11,*B15--[1]
STW B12,*B15--[1]
STW B13,*B15--[1]
STW A10,*B15--[1]
STW A11,*B15--[1]
STW A12,*B15--[1]
STW A13,*B15--[1]
STW A14,*B15--[1]
Сохранение вставляется перед первой к-дой приведенного Вами ассемблерного куска.
Т.е. перед
MVK .S2 512, B9
|| MVK .S1 0, A3
Регистры B14,A15 не сохраняются, нет нужды после замены их на B6,A9 в исходном тексте.
Но зато сохраняется регистр B3 (адрес возврата). Следовательно его можно использовать в ассемблерном куске. Вместо регистра B15. Аккуратно заменяете в приведенном Вами куске B15 на B3.
Восстановление регистров.
Вставить его нужно непосредственно перед командой возврата, т.е. перед B .S2 B3
В результате завершение ассемблерного куска будет таким
...
LDW *++B15[1],A14
LDW *++B15[1],A13
LDW *++B15[1],A12
LDW *++B15[1],A11
LDW *++B15[1],A10
LDW *++B15[1],B13
LDW *++B15[1],B12
LDW *++B15[1],B11
LDW *++B15[1],B10
LDW *++B15[1],B3
NOP 4
B .S2 B3
STW A8,A4
NOP 4
При условии, что кусок все-таки делает то, что нужно, если не считать ошибку с регистрами, которая и устраняется вышеописанным.
E-mail: info@telesys.ru