Это пример того, как загрузить EPC
в один из регистров и добавить к нему 4 байта:
lw t0, 20(sp) // Load EPC
addi t0, 4 // Add 4 to the return adress
sw t0, 20(sp) // Save EPC
Есть "много" инструкций, которые вы можете использовать,Вы можете увидеть набор инструкций MIPS здесь .По моему скромному мнению, MIPS действительно опрятен и прост в освоении!Интересный факт: первая игровая приставка использовала процессор MIPS.
Пример инструкции
lw
= слово загрузки la
= адрес загрузки sw
= слово сохранения addi
= добавить иммидат
Тогда у вас есть много условных инструкций, таких как:
bne
= ветвь не равна bnez
= ветвь не равна нулю
И с этим вы используете j
, чтобы перейти к адресу.
Вот пример из обработчика исключений, который я однажды написал для MIPS, это обработчик внешнего источника:
External:
mfc0 t0, C0_CAUSE // We could aswell use 24(sp) to load CAUSE
and t0, t0, 0x02000 // Mask the CAUSE
bnez t0, Puls // If the only character left is
// "not equal zero" jump to Puls
j DisMiss // Else jump to DisMiss
В приведенном выше примере я определяю точку входа с именем External
к которому я могу перейти, как и с DisMiss
к циклу, вы обычно переходите к себе.
Здесь также используются и другие инструкции:
mfc0
= отойти от сопроцессора 0
Для обработки этикеток Я бы посоветовал вам проверить этот вопрос / ответ.
Вот параРесурсы по микропрограммированию с помощью MIPS: