2016-02-15 3 views
0

Если значение в регистре причин является, например, 0x00000100, как можно получить тип исключения, который генерируется этот код? (из приведенной ниже таблицы)Cause регистра в MIPS32 архитектуры

0 Int interrupt (hardware) 

4 AdEL address error exception (load or instruction fetch) 

5 AdES address error exception (store) 

6 IBE bus error on instruction fetch 

7 DBE bus error on data load or store 

8 Sys syscall exception 

9 Bp breakpoint exception 

10 RI reserved instruction exception 

11 CpU coprocessor unimplemented 

12 Ov arithmetic overfl ow exception 

13 Tr trap 

15 FPE fl oating point 

ответ

1

Это описано в разделе с именем 6.15 Регистр состояния (регистр CP 12, выбор 0) в Архитектура MIPS32 ™ для программистов Том III: Привилегированный ресурс MIPS32 ™ Архитектура.

Причина Регистрация Формат

31 | 30 | 29 28 | 27 24 | 23 | 22 | 21 16 | 15 8 | 7 | 6  2 | 1 0 
------------------------------------------------------------------------ 
BD | 0 | CE | 0 | IV | WP | 0 | IP | 0 | ExcCode | 0 


IP[1:0] Controls the request for software interrupts 

В вашем примере с 0x100, что означает, что только IP0 (бит 8) регистра причин установлено, что означает, что причиной этого является программное обеспечение запрос прерывания (для прерывания программного обеспечения 0).