【BA4988】__indirect_call函数


反汇编:

__indirect_call()
{
    *(U16 *)(&__addr_reg) -= 1
    __addr_reg_1压入堆栈
    __addr_reg压入堆栈
    //跳转到*(U16 *)(&__addr_reg)执行
}

汇编:

D572 [A8 38 A5]: TAY @ 累加器送变址寄存器Y
D573 [38 A5 26]: SEC @ 置进位标志
D574 [A5 26 E9]: LDA $26 = #$FF @ 送累加器
D576 [E9 01 85]: SBC #$01 @ 带借位的减法
D578 [85 26 A5]: STA $26 = #$FE @ 存累加器
D57A [A5 27 E9]: LDA $27 = #$FF @ 送累加器
D57C [E9 00 85]: SBC #$00 @ 带借位的减法
D57E [85 27 48]: STA $27 = #$FF @ 存累加器
D580 [48 A5 26]: PHA @ 累加器压入堆栈
D581 [A5 26 48]: LDA $26 = #$FE @ 送累加器
D583 [48 98 60]: PHA @ 累加器压入堆栈
D584 [98 60 48]: TYA @ 变址寄存器Y送累加器
D585 [60 48 18]: RTS @ 子程序返回