trapIntrVSync: lui v0,_hi(Vcount) lw v0,_lo(Vcount)(v0) addiu sp,sp,-32 sw s1,20(sp) move s1,zero sw s0,16(sp) lui s0,_hi(sectbase(.data)) addiu s0,s0,_lo(sectbase(.data)) sw ra,24(sp) addiu v0,v0,1 lui at,_hi(Vcount) sw v0,_lo(Vcount)(at) text_88: lw v0,0(s0) nop beqz v0,text_A0 nop jalr ra,v0 nop text_A0: addiu s1,s1,1 slti v0,s1,8 bnez v0,text_88 addiu s0,s0,4 lw ra,24(sp) lw s1,20(sp) lw s0,16(sp) jr ra addiu sp,sp,32 |
static void (*cbIntrVSync[8])(); int Vcount; static void trapIntrVSync() { int i; Vcount++; for(i=0; i<8; i++) { if(cbIntrVSync[i]) cbIntrVSync[i](); } } |
trapIntrVSync: lw $2,Vcount subu $sp,$sp,32 sw $17,20($sp) move $17,$0 sw $16,16($sp) la $16,cbIntrVSync sw $31,24($sp) addu $2,$2,1 sw $2,Vcount $L6: lw $2,0($16) nop beq $2,$0,$L5 jal $31,$2 nop $L5: addu $17,$17,1 slt $2,$17,8 bne $2,$0,$L6 addu $16,$16,4 lw $31,24($sp) lw $17,20($sp) lw $16,16($sp) j $31 addu $sp,$sp,32 |