關於c51管理變數的一個疑惑 |
缺席
|
inlem2000
一般會員 發表:8 回覆:21 積分:5 註冊:2008-12-29 發送簡訊給我 |
|
harrypp
中階會員 發表:7 回覆:124 積分:61 註冊:2006-08-31 發送簡訊給我 |
|
inlem2000
一般會員 發表:8 回覆:21 積分:5 註冊:2008-12-29 發送簡訊給我 |
感謝回應
我不貼程式碼的原因,是因為我不方便將內容放出,另外程式碼也很長。 如果問題真的是在於我編寫c51方式的話我會把他貼出來 (我變數宣告都是沒必要用全域就不用) 至於提到的m51檔我目前正在網路上找資料來弄懂他的意思 peter90307.myweb.hinet.net/MAIN.M51
編輯記錄
inlem2000 重新編輯於 2009-12-17 12:51:28, 註解 無‧
|
foreman
高階會員 發表:3 回覆:124 積分:190 註冊:2004-09-10 發送簡訊給我 |
大大:
keil c51在定義local variables 時會吃您的內部RAM ,您可用register來定義,不過要將堆疊放大,詳 http://www.keil.com/support/man/docs/c51/c51_le_register.htm |
inlem2000
一般會員 發表:8 回覆:21 積分:5 註冊:2008-12-29 發送簡訊給我 |
|
foreman
高階會員 發表:3 回覆:124 積分:190 註冊:2004-09-10 發送簡訊給我 |
通常函數參數會使用暫存器詳
http://www.keil.com/support/man/docs/c51/c51_le_passingparmsinregs.htm 而函數局部變數也用暫存器若用多了勢必靠推疊來解決故要放大. |
inlem2000
一般會員 發表:8 回覆:21 積分:5 註冊:2008-12-29 發送簡訊給我 |
>foreman
我看了一下,這個是指說各型別的傳遞參數在暫存器上所使用的空間? 也就是說,如果我在副程式中宣告一個暫存器變數他就會使用那些沒用到的暫存器空間? 不知道我有沒有弄錯你的意思... 其實我以前曾看過一個文他有提到說因為c51使用data overlaying技術來克服區域變數浪費的問題。 (我完全感覺不出來他有在克服...|||) 在回覆文章時我去查了一下有關data overlaying文章,他有提到... 的選項, 換句話說,只讓compiler以下的最佳化動作, 雖然機械碼變的沒那麼棒,檔案大小也變大了,速度也沒那麼快, ....略 所以我在keil中找到code optimization的選項並將等級調到9(原先是0) 結果組譯後發現data從55掉到22了! 我只能感嘆好神奇.... 難道我會有這問題是因為我調成0的緣故嗎?(因為我模擬器的說明書要我調得...) 可以的話能向我說明這是什麼選項嗎? |
foreman
高階會員 發表:3 回覆:124 積分:190 註冊:2004-09-10 發送簡訊給我 |
大大:
您要的說明詳 http://www.keil.com/support/man/docs/c51/c51_optimize.htm 雖然寫了不少c51程式, 但我硬體工程師給我外部RAM 2K以上我程式只要定成#pragma la局部變數就會佔用xdata 其實我不喜歡用8051及pic因為它們用RAM很兇 我喜歡用renesas的r8c及h8tiny系列它們會將局部變數使用堆疊所以不太佔用的空間 再者8051及pic很容易招拷貝 |
inlem2000
一般會員 發表:8 回覆:21 積分:5 註冊:2008-12-29 發送簡訊給我 |
|
inlem2000
一般會員 發表:8 回覆:21 積分:5 註冊:2008-12-29 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
inlem2000
一般會員 發表:8 回覆:21 積分:5 註冊:2008-12-29 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
inlem2000
一般會員 發表:8 回覆:21 積分:5 註冊:2008-12-29 發送簡訊給我 |
都沒有解決,optimization的那個對我來說只是治標但沒有根除我的疑惑
我也想過可能問題就是出在這裡,但沒人對此表示是或否... 還有... >我看了一下,這個是指說各型別的傳遞參數在暫存器上所使用的空間? >也就是說,如果我在副程式中宣告一個暫存器變數他就會使用那些沒用到的暫存器空間? >不知道我有沒有弄錯你的意思... 這是我根據foreman他所提到的看法進行回答,但他最後沒告訴我是否誤解他的意思 他只回答我optimization的選項每個級別的公用,所以我覺得我的疑惑並沒有被根除... |
harrypp
中階會員 發表:7 回覆:124 積分:61 註冊:2006-08-31 發送簡訊給我 |
|
inlem2000
一般會員 發表:8 回覆:21 積分:5 註冊:2008-12-29 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
基於我是管理者的關係,我會站在答題者的立場著想
看到太多無故[缺席]例子,例如 http://delphi.ktop.com.tw/board.php?cid=168&fid=1499&tid=100041 所以我會希望發問者解釋為何選擇[缺席]結案 你有解釋[缺席]的原因,且前輩們的回應有參考價值,固保留此文章^^ ===================引 用 inlem2000 文 章=================== 說真的,這討論是否已經得到解答主要還是由發文的人決定吧? 從上一個回覆的人語氣中我能感覺出來一點火藥味... 所以這是我最後一次回文... 如果管理員認為這個討論早已獲得解答的話想設定成結案我不反對, 但我以我個人得角度來說... 我,並沒有得到滿意的解答 所以我選擇不結案 而且說實在的,那種明明得到解答但卻故意不結案的惡趣味心態對我來說沒有好處... 當然,明明沒得解但卻故意結案 這我就無法理解了... |
harrypp
中階會員 發表:7 回覆:124 積分:61 註冊:2006-08-31 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |