Соглашения о вызовах GCC MIPS-32 / Определение фрейма стека
Вопрос
По-видимому, для архитектуры процессора MIPS-32 не существует окончательных стандартизированных соглашений о вызове фрейма стека и языка C (использование регистров и тому подобное).То есть, похоже, что определение их собственного фрейма стека и соглашений о вызовах полностью зависит от цепочки инструментов ассемблера / компилятора.Я изо всех сил пытался найти точную ссылку на то, какие соглашения компилятор GCC использует для набора команд MIPS-32.Я специально использую кросс-компилятор GCC на Cygwin, который нацелен на ядро MIPS-32, используемое во встроенной среде на ядре eCos с открытым исходным кодом.
Будем признательны за любые ссылки на окончательную документацию о GCC для MIPS-32 в этой области.
Решение
Вы правы, это немного запутанно и плохо документировано.Я бы порекомендовал:
- http://math-atlas.sourceforge.net/devel/assembly/mipsabi32.pdf
- "Смотри, как бегут MIPS" Доминика Свитмана
- Изучение дизассемблированного кода, сгенерированного компилятором, на предмет несоответствий приведенным выше ссылкам.
Другие советы
Ссылается ли это на MIPS EABI для RedHat Linux помочь?
Я не разбираюсь в MIPS, но, может быть, это История MIPS ABI ссылка могла бы помочь.