《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 解决方案 > 澄清汇编数组和汇编及嵌入汇编之不同

澄清汇编数组和汇编及嵌入汇编之不同

2017-06-22
关键词: 汇编语言

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是否能运行???
课毕


本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。