The following program is the interrupt driven mode porgram. Which of the following procedures will be called first, when receiving the interrupt? 以下中断方式程序中,当接收到中断请求时,哪个函数首先被调用? int interrupt=0; void interrupt_hub(void) __attribute__ ((interrupt_handler));//Total interrupt service routine int main(void) { Xil_Out32(XPAR_INTC_0_BASEADDR+XIN_IAR_OFFSET, XPAR_SYSTEM_IN2_0_MASK|XPAR_SYSTEM_IN3_0_MASK); Xil_Out32(XPAR_INTC_0_BASEADDR+XIN_IER_OFFSET, XPAR_SYSTEM_IN2_0_MASK|XPAR_SYSTEM_IN3_0_MASK); Xil_Out32(XPAR_INTC_0_BASEADDR+XIN_MER_OFFSET, XIN_INT_MASTER_ENABLE_MASK|XIN_INT_HARDWARE_ENABLE_MASK); microblaze_enable_interrupts(); while(1) { xil_printf("waiting for interrupt"); while(!interrupt); interrupt=0; xil_printf("returned from interrupt"); } return 0; } void interrupt_hub(void) { int status; status=Xil_In32(XPAR_INTC_0_BASEADDR+XIN_ISR_OFFSET); if((status&XPAR_SYSTEM_IN2_0_MASK)==XPAR_SYSTEM_IN2_0_MASK) interrupt_intr2(); if((status&XPAR_SYSTEM_IN3_0_MASK)==XPAR_SYSTEM_IN3_0_MASK) interrupt_intr3(); Xil_Out32(XPAR_INTC_0_BASEADDR+XIN_IAR_OFFSET,status); interrupt=1;//End of interrupt processing flag } void interrupt_intr2(void)//intr2 handler { xil_printf("interrupt 2 is processing"); } void interrupt_intr3(void)//intr3 handler { xil_printf("interrupt 3 is processing"); } A、interrupt_hub B、main C、interrupt_intr2 D、interrupt_intr3