Я пишу процедуру ассемблера для обработки исключения внешнего/декремента 0x500 в приложении PowerPC, включенном EABI.Использование указателя стека r1 при обработке внешних исключений в PowerPC
В моей процедуре ассемблера, вызванной из векторной точки 0x500, я хочу использовать некоторую память для регистров сохранения контекста до перехода к функции обработчика в 'C'.
Поскольку я) модель исключение гарантирует предыдущие инструкции закончили к тому времени обработчик исключений работает И II) соглашение о вызове появляется обновить указатель стека (r1) первого при входе в новую функцию, перед тем используя новое пространство стека, освобожденное, перемещая его (и переместите указатель стека назад туда, где он был последним в конце функции)
Мне кажется, что я могу безопасно использовать r1, чтобы дать себе больше места на нормальный стек в процедурах обработки исключений, при условии, что я придерживаюсь соглашения о вызове и вернул стек, как я его нашел, и убедитесь, что SRR0 и SRR1 не изменены.
Я не буду допускать исключений, которые используют стек в их обработке для гнезда (хотя на самом деле с использованием этого метода я не уверен, что возникнет проблема).
Считаете ли вы, что это разумный подход или я должен использовать отдельный стек для обработки исключений? - Я думаю, что это может принести с собой свои проблемы.
:-) К счастью, у меня есть около 98% моей памяти для стека. Это гораздо более простая программа, чем плата была разработана для запуска – sparklewhiskers