为什么我需要掩码指令?

时间:2013-07-23 14:53:44

标签: assembly hardware interrupt fpga nios

在带有altera DE2 FPGA的Nios 2中,我研究了以下中断代码

异常:检查陷阱或中断

exc_hand:
 rdctl et,estatus # read estatus
 andi et,et,1 # mask EPIE, bit 0
 beq et,r0,noint # om EPIE == 0: no interrupt
 rdctl et,ipending # read ipending
 beq et,r0,noint # if ipending == 0: no interrupt
int_check: # if we reach this then there aws an interrupt
 subi ea,ea,4 # adjust exception return address

我可以理解第一个指令和面具的作用,但我不明白为什么面具是必要的。是因为在比特0的其他位中可能存在垃圾?仅使用AFAIK位0,为什么我需要屏蔽它?

1 个答案:

答案 0 :(得分:1)

请参阅NIOS II Processor Reference Handbook Programming Model中的表3-8 - 其中有一大堆位可以设置。例如,NMI位,影子寄存器位等......

您发布的代码仅对位0(PIE位)的状态感兴趣,因此它会屏蔽其他位。