У меня есть простой загрузчик, который инициализирует и подготавливает SDRAM. Затем он загружает приложение из Flash и запускает его по некоторому адресу в ОЗУ. После того как приложение завершит свое выполнение, система перезапустится. Системного стека нет.C/Assembler - код возврата в однопользовательской однозадачной операционной системе без стека
Теперь я хотел бы, чтобы этот загрузчик получил контроль после того, как приложение завершило его выполнение. Загрузчик (давайте называть его OS) также должен прочитать код возврата приложения.
Как приложение может вернуть значение вызывающей операционной системе и как вызывающая ОС получает контроль? Я полагаю, это можно сделать с помощью прерываний - ОС имеет специальную резидентную функцию, соединенную с некоторым прерыванием, и каждое приложение просто вызывает это прерывание в конце своего собственного исполнения. Но как код возврата может быть прочитан ОС, если нет системного стека?
Я не уверен, что это хорошее решение, но, возможно, вы можете просто сохранить возвращаемое значение в специальную ячейку памяти, используемую только для этой конкретной цели? Он должен хорошо работать, если ваша ОС позволяет одновременно запускать только одно приложение. –