Я пишу статью об эволюции языков программирования и написал небольшую программу в MIPS Assembly, которая вычисляет первые 100 простых чисел. Одной из (псевдо) инструкций этой программы является 'rem $ t3, $ t0, $ t2', которая преобразуется в следующие четыре нативные инструкции:
bne $10, $0, 0x00000001
break
div $8, $10
mfhi$11
Я никогда раньше не замечал эту инструкцию по прерыванию, поэтому я искал повсюду и едва мог найти упоминание о команде прерывания или ее типе.
Единственные два документа, которые я смог найти, где это , в котором говорится "break" как инструкция, используемая отладчиком, и это еще один , в котором говорится "break" как инструкция с три части: специальный (6 бит), код (20 бит) и разрыв (6 бит), но в нем нет ссылки на тип этой инструкции. Это, конечно, не тип R, I или J.
Так что мне было интересно:
- Является ли инструкция по прерыванию частью MIPS ISA или только инструкция
МАРС признает?
- Какой тип инструкции для команды разрыва?
- Как он передает управление в обработчик исключений, аппаратно?
- Изменяет ли он регистр счетчика программ (ПК)?