• slider image 514
  • slider image 516
  • slider image 517
  • slider image 518
  • slider image 519
:::


Browsing this Thread:   1 Anonymous Users






Re: 在C18, 區域變數用太多, 真的會影響效率嗎 ?
#4
資深會員
資深會員


查看用戶資訊
再問一下

1. 鈀區域變數設為放在資料堆疊, 除了效率比較不好以外, 如果函數中設了很多的區域變數(例如 陣列or union), 有沒有可能造成不可預期bug的風險

2. 更改Default storage class 把區域變數都設為Static, 那, 執行函數時,區域變數的初始值會是0? 或是為未知數值,必須自行處理初始值?

3. 如果不care 效率的話, 區域變數是設在資料堆疊比較好還是設為static比較好?

發表於: 2005/9/14 9:28
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 在C18, 區域變數用太多, 真的會影響效率嗎 ?
#3
中級會員
中級會員


查看用戶資訊
8051 得堆疊可以儲存資料,但是PIC的堆疊不能存放資料!

另外,還有一點PIC的堆疊不能直接修改某層,但是8051可以!

發表於: 2005/9/14 2:48
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 在C18, 區域變數用太多, 真的會影響效率嗎 ?
#2
版主
版主


查看用戶資訊
1. 31層的硬體堆疊跟Local Variable 的存取無關,它是存放呼叫函數(副程式)及中斷服務所用,存的只有Progra Counter Address 而已。

2. Local Variable 一般是放在資料堆疊裡與參數傳遞相同,當然你也可以在 Compiler 的設定使用沒用道德 RAM 來暫存這樣速度也會快些。

3. 可以在 Project --> MPLAB C18 --> Default storage class
下選擇 Static 後就會用剩餘的 RAM來做Local Variable

發表於: 2005/9/13 17:59
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


在C18, 區域變數用太多, 真的會影響效率嗎 ?
#1
資深會員
資深會員


查看用戶資訊
看到之前一篇討論裡提到
================================================
http://www.microchip.com.tw/modules/n ... 189&forum=1#forumpost4736

在C裡的變數會有所謂的生命週期的問題 , 例三的變數C只有在MAIN裡才存在 , 而且是放在堆疊裡 , 而且每次的位置都不一定一樣 , 而例二的靜態變數是一直存在的及例一的全域變數都是佔用實質的位址 , 所以資料的存取都不會有問題 , 其實MCU寫C的一點觀念和PC的C++不太一樣 , 最好在MCU中都宣告成全域變數 , 就是在函式外宣告 , 有幾個好處 ,
MCU的RAM就是那麼多 , 你不用它還是在那邊 , 不會因為你不用就會比較便宜 , 還有 , 如果你常用區域變數宣告的話 , COMPILER都會用堆疊的方式處理 , 真正執行的時侯 , 堆疊指標的處理 , BANK的處理都會花掉一些指令 , 也許真正的動作只有兩三個指令 , 結果光是堆疊的處理可能就會花掉三四十個指令 , 這是有可能的 , 因為我遇過........ , 所以 , 變數宣告成全域只有好處 , 不會比較壞 , 除非真的用到只剩下幾個RAM , 非斤斤計較不可 , 但是.........寫C還能把RAM用到只剩幾個 , 那也太省了 , 換顆大一點的吧!
==============================================

請問.......是否真的像那位大大所說的
區域變數 都是用堆疊方式處理的

如果是正樣的話 一個函數的區域變數不就不能設太多個
不然pic18 31層的堆疊哪夠??

發表於: 2005/9/12 14:32
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------