egoistic
Oct 28 2009, 12:25
Здравствуйте!
Меня интересует, почему компилятор ругается на ассемблерные вставки pusha и popa. Их в IAR EWAVR 5.30 не исключили случаем, или я где-то что-то недочитал/недопонял.
"Смешались в кучу кони, люди" (С)
Откуда pusha/popa в AVR? Это раз. Второе: зачем?
rezident
Oct 28 2009, 14:32
Используя язык высокого уровня (Си) нельзя произвольно работать со стеком с помощью ассемблерных вставок, за исключением законченных ассемблерных функций (подпрограмм). То бишь функция должна быть написана на ассемблере по правилам, определяемым конкретным компилятором (с учетом способов передачи аргументов и возврата результата). И если она использует стек, то перед выходом должна вернуть его в исходное (как было до вызова) состояние. В других случаях произвольные ассемблерные вставки работы со стеком чаще всего ведут к нарушению работы всей программы.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.