原创 HotC51共产儿童团第十六课:澄清汇编数组和汇编及嵌入汇编之不同

2009-3-9 20:07 2898 1 1 分类: MCU/ 嵌入式
HotC51 发表于 2009-3-9 20:11 裸奔式实时操作系统HotTask51 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

楼主: HotC51共产儿童团第十六课:澄清汇编数组和汇编及嵌入汇编之不同




开课:
HotC51 发表于 2009-3-5 17:25 侃单片机 ←返回版面 profile.gif fav.gif edit.gif

26楼: (保留罪证)“红杏出墙装疯拳”小贴士--老x的简单版START:


void MACRO_RETI(void)
{
    asm_RETI()        //里面就是一句汇编的RETI,它会抢先与函数自己的RET执行
};                    //这个函数自己的RET永远不执行到,因为跳走了

void __HotASM_START__ (void)    //启动时运行的代码
{
    MACRO_CLR_EA;        //关中断
    MACRO_Check_Crack;    //反破解陷阱
    MACRO_RETI();        //释放中断优先级
    MACRO_RETI();        //再释放一次
    MACRO_LJMP_ANY(main);    //用压栈和RET做的任意位置长跳转,地址是main主程序
};        //这里其实会有个RET


菜农来澄清汇编数组和汇编及嵌入汇编最大的不同:
汇编数组内实际存放的是数据而非代码,但用函数指针强行跳入后,数据变“升华”
为代码。
它本来就是为动态链接而设计,故编译期间是找不到静态地址的,至少俺现在无
好办法。
即使能找到静态地址,如汇编的:
lcall xxxx;   ajmp xxx
都属于此类。
汇编数组是吴旭光教授与菜农为以后能在任何MCS/ARM/DSP上运行OS
所参照PC的动态链接库DLL/LIB所设计的。
以前虽在DSP上应用,但很局限。
这次在51上大面积推广,故菜农熬夜赶制了HotASM,HotCOM.HotMACRO等,
这样可以用汇编数组(宏)通过COM接口直接相互访问,而且可以和C函数通讯。
最近版本已全面支持C函数调用汇编数组宏,且宏在某些语句要比C精炼的多。
并且很容易加入“反逆向代码”且不影响正常程序。
所以,汇编数组的编写应该基于动态链接的思想,虽然这样代码效率会影响些
但不会影响主流。
菜农是实用主义,不爱说教,只看结果,不管过程。
所以不知XWJ的MACRO_RETI是否能运行???
课毕

HotC51@126.com   2009.3.9于菜地。
团部:http://group.ednchina.com/1623/


PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
1
关闭 站长推荐上一条 /3 下一条