會員登陸
帳號:

密碼:

記住我



忘記密碼?

現在註冊!
網站導航
最新下載
訪問統計 (自2012/5/3)


正在流覽:   1 名訪客





static inline問題請教
資深會員
註冊日期:
2004/07/12 13:55
所屬群組:
註冊會員
文章: 295
等級: 16; EXP: 6
HP : 0 / 376
MP : 98 / 17476
離線
看到有人寫程式碼如下
static inline void callback(void)
{
....
}
請問副程式前的static inline是何意義?於Program中與一般的副程式佔程式碼空間有何不同?是否有影響程式執行速度?

3月02日 18:19:38
轉換PDF檔 列印


Re: static inline問題請教
資深會員
註冊日期:
2007/06/05 21:45
所屬群組:
註冊會員
文章: 1051
等級: 28; EXP: 58
HP : 0 / 689
MP : 350 / 26163
離線
簡單的說...
就是副程式 不當副程式...
直接"展開"---有點巨集(marco)的味道在
詳細的google一找就有一堆...

主程式 呼叫 副程式,
副程式 最後返回 主程式
這中間是要有代價的...

1. 儲存 主程式(返回)位置
2. 備份(儲存)相關工作暫存器
3. 相對變數空間
4. 跳到 副程式
5. 執行 副程式 工作
6. 還原相關工作暫存器
7. 返回值設定
8. 跳回主程式
流程式可能會有一些小差異...
但(副程式呼叫的)開銷是跑不掉的

如果 副程式的程式(碼)要做的事很少(很簡單)
可能 其他相關工作開銷就比副程式碼還來得多...
好比: 請某人幫忙做一件需要一分鐘的事,
但光跟他溝通就花了三分鐘....
這時候直接去做反而比較快(副程式(碼)就地展開)....

優點: 少了開銷(速度快了)
缺點: 程式碼展開(用愈多次,展開的程式碼愈多)
註: 副程式就一份程式碼而已

註: inline 是建議,編譯器這樣做,
但有可能inline沒成功,還是一般副程式...

3月02日 21:54:45
轉換PDF檔 列印






無法在此發表文章
可以在此觀看文章
無法回覆文章
無法編輯自己的文章
無法刪除自己的文章
無法發起投票調查
無法在此投票
無法上傳附加檔案
無法不經審核直接發表文章

[進階搜尋]


搜尋
Microchip連結
產品技術問題產品技術支援專線:0800-717718 台北02-25088600 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830
Powered by XOOPS © 2001-2012 The XOOPS Project