匯編語言是一種什么語言 請問keil中編譯后的Program Size:data xdata code上限是多少?
請問keil中編譯后的Program Size:data xdata code上限是多少?Keil C51。Keil MDK應該可以達到4GB。C51的實際值與您的硬件和軟件有關。代碼只與硬件有關,不
請問keil中編譯后的Program Size:data xdata code上限是多少?
Keil C51。Keil MDK應該可以達到4GB。C51的實際值與您的硬件和軟件有關。代碼只與硬件有關,不能超過Rom的總容量。通常,Rom的最大容量是64KB。如果您在項目中選擇了一個芯片,如果超過了它,系統(tǒng)會提示您。Keil的代碼銀行功能可以超過64KB,但最大值尚未驗證。數據與最大嵌套級別相關。計算時,應注意中斷嵌套。如果排除嵌套,則需要保留的堆棧就是最大數據量。如果芯片ram只有128B,則需要使用128從堆棧中減去保留字節(jié)數。如果超過256b,通常使用256進行減法。如果有一個可重入函數并且它是在小內存模式下編譯的,則有必要考慮可重入函數的數量??芍厝牒瘮翟趩纹瑱C中應盡量避免使用。每次重入時,函數中變量的字節(jié)數會占用更多的內存,這更像PC函數。如果您使用malloc和其他函數,您可以自己判斷。擴展數據基本上可以用完。你想用多少就用多少。如果存在一個小內存模式,在該模式下不使用重入功能,則需要保留重入所需的內存。
請問一下,遞歸函數是否有一定限制?例如棧的大小和棧的數量?
必須有限制。
遞歸消耗大量堆棧資源。如果遞歸太多,它將溢出。確切地說,函數調用本身將消耗堆棧資源,但在函數調用結束時,將返回函數使用的堆??臻g,因此這不是一個大問題。很少看到程序堆滿了。但是遞歸是個例外。它是一個在循環(huán)中調用自身的函數。在遞歸結束之前,堆棧使用量將繼續(xù)增長。程序是否會溢出取決于遞歸函數能否在堆棧滿之前返回。目前還不清楚windows中的程序堆棧有多大。但是強烈建議不要使用遞歸,因為這有點貴。遞歸是一種編程概念,但實際使用較少,畢竟大家都知道,如果次數較多,這個東西就會溢出。只需更改代碼并將其更改為迭代。
遞歸出現堆棧溢出異常?
遞歸最常見的問題是堆棧溢出。一般來說,操作系統(tǒng)分配給進程的堆棧內存是2m(就好像是2m)。根據正常的程序處理,局部變量進出棧都不太可能溢出,但遞歸會導致棧溢出,從而可能導致棧溢出。在這里定義兩個int變量,即8字節(jié),然后用保存的函數地址等信息,*100000次遞歸,還有一些其他局部變量放入堆棧,它們可能已經超過了最大堆??臻g,所以它們會溢出。