Использование beq $a3, 1, basecase
- это совершенно неправильно .Это сработало для вас, потому что регистр 1 ($ at) оказался равным регистру $ a3.Это совпадение не слишком удивительно, потому что $at
используется ассемблером MIPS в качестве временного регистра.
Двоичное кодирование для инструкции beq
использует: биты 31:26 для кода операции (000100
);биты 25:21 для первого номера регистра;биты 20:16 для второго номера регистра;биты 15: 0 для смещения адреса.Там нет положения для немедленного значения для этой инструкции.