2016 - 2024

感恩一路有你

汇编语言是一种什么语言 请问keil中编译后的Program Size:data xdata code上限是多少?

浏览量:2296 时间:2021-03-13 06:26:15 作者:admin

请问keil中编译后的Program Size:data xdata code上限是多少?

Keil C51。Keil MDK应该可以达到4GB。C51的实际值与您的硬件和软件有关。代码只与硬件有关,不能超过Rom的总容量。通常,Rom的最大容量是64KB。如果您在项目中选择了一个芯片,如果超过了它,系统会提示您。Keil的代码银行功能可以超过64KB,但最大值尚未验证。数据与最大嵌套级别相关。计算时,应注意中断嵌套。如果排除嵌套,则需要保留的堆栈就是最大数据量。如果芯片ram只有128B,则需要使用128从堆栈中减去保留字节数。如果超过256b,通常使用256进行减法。如果有一个可重入函数并且它是在小内存模式下编译的,则有必要考虑可重入函数的数量。可重入函数在单片机中应尽量避免使用。每次重入时,函数中变量的字节数会占用更多的内存,这更像PC函数。如果您使用malloc和其他函数,您可以自己判断。扩展数据基本上可以用完。你想用多少就用多少。如果存在一个小内存模式,在该模式下不使用重入功能,则需要保留重入所需的内存。

请问一下,递归函数是否有一定限制?例如栈的大小和栈的数量?

必须有限制。

递归消耗大量堆栈资源。如果递归太多,它将溢出。确切地说,函数调用本身将消耗堆栈资源,但在函数调用结束时,将返回函数使用的堆栈空间,因此这不是一个大问题。很少看到程序堆满了。但是递归是个例外。它是一个在循环中调用自身的函数。在递归结束之前,堆栈使用量将继续增长。程序是否会溢出取决于递归函数能否在堆栈满之前返回。目前还不清楚windows中的程序堆栈有多大。但是强烈建议不要使用递归,因为这有点贵。递归是一种编程概念,但实际使用较少,毕竟大家都知道,如果次数较多,这个东西就会溢出。只需更改代码并将其更改为迭代。

递归出现堆栈溢出异常?

递归最常见的问题是堆栈溢出。一般来说,操作系统分配给进程的堆栈内存是2m(就好像是2m)。根据正常的程序处理,局部变量进出栈都不太可能溢出,但递归会导致栈溢出,从而可能导致栈溢出。在这里定义两个int变量,即8字节,然后用保存的函数地址等信息,*100000次递归,还有一些其他局部变量放入堆栈,它们可能已经超过了最大堆栈空间,所以它们会溢出。

汇编语言是一种什么语言 c语言中struct函数的作用 fopen_s函数的用法

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。