32 регистра с совершенно дебильным поведением:
- непонятный $gp, который указывает черт знает куда
- два специальных регистра для ядра ОС. Толку от них кмк - никакого.
- два возвратных регистра из функции. Нафига?
- куча временных регистров. Слишком большая куча.
- дебильный $fp. Нафига если первым делом все равно регистры сохраняются, потом их оттуда же восстанавливать?
- целый регистр для хранения константного нуля.
Условный бранч в целом, через две инструкции: сравнение, запись во временный регистр, сравнение его с нулевым регистром
Но больше всего выносит мозг, конечно, delayed slot. Сначала бранч, потом исполняем инструкцию до бранча.
Хотя, конечно, приятно что-нибудь пореверсить после полугода чистой разработки...