久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2063|回復: 8
打印 上一主題 下一主題
收起左側

關于單片機動態內存管理

[復制鏈接]
跳轉到指定樓層
樓主
ID:908826 發表于 2021-11-3 20:05 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
請問一下,對于現在這種高性能的單片機,動態內存管理是不是不那么重要了,或者說動態內存管理我是不是可以理解為精打細算使用內存空間???
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:624769 發表于 2021-11-3 20:29 | 只看該作者
動態內存管理,很大程度上,是為了提高運行效率,而不是內存夠不夠用。

拿51舉例子,撇開A寄存器不談,R0~R7的存取速度,和直接地址存取不是一個等級的,而直接地址存取和間接地址存取,又不是一個等級的,即使是間接地址存取,基本存儲 MOV 訪問的, 和擴展存儲 MOVX訪問的,又不是一個等級的。 所以,為了提高某部分的運行效率,動態的管理內存,把某些數據提前移動到直接地址,甚至R0~R7,這樣的動態內存管理,還是有必要的。
回復

使用道具 舉報

板凳
ID:883242 發表于 2021-11-3 20:50 | 只看該作者
你說反了,越是垃圾單片機越不能用動態管理,實際上單片機就別用動態管理。

在電腦手機App上面,退出進程內存碎片自然沒有了,在沒有OS可以退回去,7x24小時工作的單片機上面內存碎片問題是無解的。
回復

使用道具 舉報

地板
ID:908826 發表于 2021-11-3 20:56 | 只看該作者
188610329 發表于 2021-11-3 20:29
動態內存管理,很大程度上,是為了提高運行效率,而不是內存夠不夠用。

拿51舉例子,撇開A寄存器不談,R ...

我是不是可以理解為把某些變量劃分到直接尋址區,來提高運行效率
回復

使用道具 舉報

5#
ID:624769 發表于 2021-11-3 21:10 | 只看該作者
13205495918 發表于 2021-11-3 20:56
我是不是可以理解為把某些變量劃分到直接尋址區,來提高運行效率

是的,當你有計劃的定義變量的時候可以這樣,在條件允許的前提下,這樣當然最好。不過這個就是固態內存管理了。
所謂動態管理,就是運行不同的模塊的時候,把這部分模塊相關變量移到基本存儲區,用完后放回擴展存儲區。把基本存儲區再騰出來。供下一個模塊使用。當各種模塊需要高速運算,分配基本存儲區地址存放變量,而基本存儲區容量不夠承擔所有模塊給固定存放空間時,需用到動態分配。
回復

使用道具 舉報

6#
ID:908826 發表于 2021-11-3 21:42 | 只看該作者
188610329 發表于 2021-11-3 21:10
是的,當你有計劃的定義變量的時候可以這樣,在條件允許的前提下,這樣當然最好。不過這個就是固態內存管 ...

非常感謝您的回答,嘿嘿
回復

使用道具 舉報

7#
ID:624769 發表于 2021-11-3 22:44 | 只看該作者
13205495918 發表于 2021-11-3 21:42
非常感謝您的回答,嘿嘿

不謝,能幫到你就行。
順便提一下,越是垃圾的單片機,當你基本存儲空間不夠分配的時候,要想提高效率,其實越需要動態內存管理,我們繼續拿51舉例。
用C的人可能感覺不到,其實擴展存儲里變量,單片機是無法直接操作的。debug會發現,先要通過 MOVX A,@DPTR 讀出來,然后存放到不同 寄存器,然后才開始操作,操作完了,還要再通過MOVX @DPTR, A 存回去。而這個過程,你需要把 累加器入棧,通用寄存器入棧,DPTR指針入棧,操作完了還要一個個的出棧。而動態分配了基本存儲空間的話,對該模塊操作時所有變量都在基本存儲里的話,不管是與或操作,還是遞增遞減操作等等,都是不需要通過累加器,或通用寄存器,更不需要DPTR指針的騰位子的,效率的提高根本不是一個量級的。
回復

使用道具 舉報

8#
ID:401564 發表于 2021-11-3 23:01 | 只看該作者
沒有必要折騰那么多
你要了解是是單片機的硬件和工作方式,還有就是C語言本身,變量正確的使用方式就可以
至于堆棧,尋址方式,直接尋址區,CY,R0,R1...那是匯編的,雖說多了解一下是有好處的,但那是沒有必要的,意義不大,你只要按照C語言指導的正確方式去編寫代碼就可以了,如果用C還去管那么多尋址方式,那還不如直接用匯編
在8051
C語言的變量沒有特定聲明的,編譯器都會指定為動態存儲,而且優先使用256字節的RAM,如果還不夠用,編譯器自動使用外部XDATA,不需要人為的去規劃的,不要用匯編的思維去寫C程序
一個不會匯編的人,只要C語言的功底到家,一樣的可以寫出好的程序出來
想提高運行效率,使用C語言中提供的方法就可以,但更好的是辦法是直接用帶硬件加法器或者乘法器單片機

如果你只學8051,視野可能就很小,你再去學的別的指令系統的單片機的話,你就會發現,8051這方面很多知識在別的單片機上是用不到的
回復

使用道具 舉報

9#
ID:491577 發表于 2021-11-4 01:04 | 只看該作者
支持8樓的說法,單片機主要功能是:1、接收信號輸入;2、輸出信號控制設備;這些對速度的要求很低,毫秒級就可以,大部分應用都不需要考慮速度,真正需要考慮速度時單片機大部分都不能夠勝任了,需要用到手機、電腦等更快的設備了。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品综合久久 | 免费在线观看成人 | 羞羞涩涩在线观看 | 亚洲成人国产精品 | 久久精品国产一区二区电影 | 欧美久久一区二区三区 | 五月婷六月丁香 | 福利片在线观看 | japanhd成人| 正在播放国产精品 | 国产一区二区三区精品久久久 | 亚洲在线免费 | 久草免费在线视频 | 亚洲精品电影在线观看 | www亚洲免费国内精品 | 国产精品欧美一区二区三区不卡 | 成人免费观看男女羞羞视频 | 自拍偷拍一区二区三区 | 亚洲精品日韩综合观看成人91 | 成人福利网站 | 国产精品一区二 | 夜夜骑首页 | 在线观看av网站永久 | 成人无遮挡毛片免费看 | 欧美又大粗又爽又黄大片视频 | 欧美日韩国产在线观看 | 精品久久久久久久久久久久 | 成人在线一区二区三区 | 国产在线一区二区 | 国产一区三区视频 | 国产yw851.c免费观看网站 | 成人精品一区二区户外勾搭野战 | 久久久久久久成人 | 最新国产精品精品视频 | 久日精品 | 中文字幕专区 | 亚洲国产精品一区二区三区 | 日本精品一区二区三区在线观看视频 | 色综合色综合网色综合 | 97福利在线 | 在线中文视频 |