Board logo

标题: void _CALL_STAR08(void) [打印本页]

作者: 微毫度十分个扩大飞机公婆    时间: 2007-1-24 17:51     标题: void _CALL_STAR08(void)

void _CALL_STAR08(void) {
/* DESC: calls a function (dest as pointer) with 2 register parameters (complex due to lack of registers!!!)
IN: H:X function pointer, TOS parameter assigned to X or H:X
OUT:
WRITTEN: A,X,H */

asm {
PSHX ; // push function pointer
PSHH
PSHA ; // push non pushed register param
TSX
LDA 6,X ; // push pushed register params
PSHA
LDA 5,X
PSHA
LDA 4,X ; // move ret@:lo
STA 6,X
LDA 3,X ; // move ret@:hi
STA 5,X
LDA 2,X ; // move function pointer:lo
STA 4,X
LDA 1,X ; // move function pointer:hi
STA 3,X
PULH ; // pull register params to their register
PULX
PULA
AIS #2 ; // free resulting gap. now the function pointer is TOS and the RTS calls the function.
RTS ! {A+X} , {H+SR}
}
}
#endif
斑竹能不能详细说说这个函数的作用?谢谢


作者: seuafu2005    时间: 2007-1-25 10:32

没有详细看,基本上应该是通过RTS命令,把PC指针指向TOS函数,TOS不清楚是什么。从这个函数名看,可能是调用一些初始化的程序




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0