用C语言写程序的时候层数太多会不会出问题我用义隆的单片机

用C语言写程序的时候层数太多会不会出问题我用义隆的单片机,第1张

会出现堆栈溢出

一般编译器在编译时候,会将全局变量以外的空间都作为堆栈使用,函数内声明的局部变量、数组等,全部是放在堆栈里的。

每运行一个函数,编译器还会统计这个函数用到了几个寄存器,然后在函数运行前将寄存器压栈,函数返回前出栈

嵌套太多了,一直在压栈,没有出栈,或者局部变量声明太多,很快堆栈就溢出了。

这也是单片机调用递归函数时要小心再小心的原因。

我曾经用ARM7编写程序时,由于全局变量太多了,保留堆栈空间太少造成过堆栈溢出

是台湾义隆单片机。八位单片机,内部有1K13位的一次性烧写ROM(OTP-ROM)

不属于51系列单片机。需要用他们义隆公司专用的编程器烧写程序。汇编指令跟51系列单片机完全不同。

义隆单片机大部分产品都是一次性烧写不可修改的,所以在一些小家电,小玩具里很常用(烧进去就不用升级程序什么的)。价格很便宜,适合大批量产品开发。

楼主如果需要用来学习的话就免了。另外单片机资料在网上就能找到,不需要搜索完全部关键字,搜EM78P156,其后面的那些字母都是这个芯片的注释。

这个是一种宏定义,

比如第一条:#define DISI() _asm{disi} //禁止总中断

在后续的C语言代码中,如果遇到DISI()字符串,编译器会先将其替换为 _asm{disi}

而_asm{} 表示执行大括号内的汇编代码。

例如:

程序代码(示例无实际意义)为:

a = b + c;

DISI();

b = a + c;

编译器会将其变为:

a = b + c;

_asm { disi }

b = a + c;

然后再进行编译!

_asm { disi } 表示禁止总中断。

手机不再是单纯的手机,它是有情感的智能机器人,而它的芯片被别人控制,我们不仅仅要学会和人相处,更要学会和手机处理好关系,它一不高兴,就有办法给我们设置阻碍,天下之大,能人倍出,望老天爷快速研究出新的东西来智胜它吧,不想被手机控制,望转发!保护自己自己的隐私是每个公民的权利!

以上就是关于用C语言写程序的时候层数太多会不会出问题我用义隆的单片机全部的内容,包括:用C语言写程序的时候层数太多会不会出问题我用义隆的单片机、EM78P156ELP-G这个是那里产的单片机,可不可以多次烧录,用什么烧录器编写程序与51区别大不、义隆单片机C语言中调用汇编 这几条如何读解(祥细)谢谢!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9665002.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存