首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

void _CALL_STAR08(void)

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
斑竹能不能详细说说这个函数的作用?谢谢

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