void VSyncCallback(void (*callback)());


disassembled listing :
VSyncCallback:
    addiu   sp,sp,-24
    lui     v0,_hi(data_10E0)
    lw      v0,_lo(data_10E0)(v0)
    move    a1,a0
    sw      ra,16(sp)
    lw      v0,20(v0)
    nop
    jalr    ra,v0
    li      a0,4
    lw      ra,16(sp)
    addiu   sp,sp,24
    jr      ra
    nop
source code :
typedef struct
{
    char    *id;
    void    *(*setIntrDMA)(int, void (*)());
    void    *(*setIntr)(int, void (*)());
    void    *(*startIntr)();
    void    *(*stopIntr)();
    void    *(*setIntrVSync)(int, void (*)());
    void    *(*resetIntr)();
} INTRCB;

static INTRCB _intrCB_ = {
    "$Id: intr.c,v 1.75 1997/02/07 09:00:36 makoto Exp $",
    0,
    setIntr,
    startIntr,
    stopIntr,
    0,
    0
};

static INTRCB *intrCB = &_intrCB_;

void VSyncCallback(void (*callback)())
{
    intrCB->setIntrVSync(4, callback);
}
reversed listing :
VSyncCallback:
    subu    $sp,$sp,24
    lw      $2,intrCB
    move    $5,$4
    sw      $31,16($sp)
    lw      $2,20($2)
    nop
    jal     $31,$2
    li      $4,0x00000004
    lw      $31,16($sp)
    addu    $sp,$sp,24
    j       $31
    nop
coincidence: 100%

STATUS: COMPLETE
20 Apr 2003
Hosted by uCoz