2009-05-01 4 views
10

Для архитектуры процессоров MIPS-32 не существует окончательного стандартизованного фрейма стека и соглашений о вызове языка C (использование регистров и т. Д.). То есть, по-видимому, он полностью соответствует цепочке инструментов ассемблера/компилятора, чтобы определить свой собственный фрейм стека и соглашения о вызовах. Я изо всех сил пытался найти окончательную ссылку на то, какие соглашения использует компилятор GCC для набора инструкций MIPS-32. Я специально использую кросс-компилятор GCC на Cygwin, который нацелен на ядро ​​MIPS-32, используемое во встроенной среде в ядре с открытым исходным кодом eCos.GCC MIPS-32 Условные обозначения/определение фреймов

Любые ссылки на окончательную документацию о GCC для MIPS-32 в этой области будут оценены.

ответ

5

Вы правы, это немного беспорядок и плохо документирован. Я бы рекомендовал:

  • http://math-atlas.sourceforge.net/devel/assembly/mipsabi32.pdf
  • «Смотрите MIPS Выполнить» Доминик Суитменом
  • Исследования разобранного кода, сгенерированный компилятором, чтобы проверить расхождения с указанными выше ссылками.
+0

Спасибо за ссылки. Я действительно посмотрел на сгенерированный код, и большинство из них я понял, но трудно понять, что у меня на самом деле есть общий случай, хорошо определенный для всех типов и комбинации параметров и т. Д. –

4

Я не в MIPS, но, возможно, это может помочь ссылка MIPS ABI History.

+1

Эта ссылка больше не работает. Новая ссылка выглядит следующим образом: http://www.linux-mips.org/wiki/MIPS_ABI_History – antoyo

Смежные вопросы