Re: [問題] C 語言有機械週期嗎??
※ 引述《hotpot21 (小新)》之銘言:
: ※ 引述《hotpot21 (小新)》之銘言:
: : 只知道組合語言有機械週期
: : 請問C 也有嗎? 指令的cycle等等..
: : 哪裡有相關資料?
: : 感謝!!
: (以下 C語言 使用在 8051)
: compiler後,
: 看到Program Size: data=41.5 xdata=0 code=8869 這一行
就我的認知,回答下列問題
如果有錯誤的地方,歡迎批評指導!
這裡的data, xdata, code應該是指記憶體的位置。
宣告為data使用內部記憶體,速度會比較快
宣告為xdata使用外部記憶體,速度會稍微比較慢
而這裡的code應該是指complier之後code size的大小。
: 1.是不是上面的數字減少 就表示程式執行的速度就會加快一些??
: 2.將 int 改成 char , 上面code值有減少 ,也有算是加快一點點點點點???
因此,如果宣告為data執行速度會比較快。
但應該並不是指code size變小,就會變快?
int改為char應該只是為了減少所佔的flash大小.....
實際上應用常常都會有flash不夠的困擾。
: 3.副程式可使用在陣列嗎? 怎麼宣告? 宣告為哪種型態? 例: CODE[]={ light(),... };
宣告和main() function一樣啊!
至於哪種型態,應該是看你的用途吧。
: 3.要怎麼知道哪些指令是關係到 data ,哪些關係到 xdata ,哪些關係code?
: 最終目的:加快程式執行速度
通常常用的就會宣告為data,而且為global variable。減少parameter的傳送,加快速度
: 4.有哪些方法??
: 5.知道加可以"組語", 但不會用= = 試過還是會出現錯誤 怎樣做才算完全正確?
: (以下是我僅知道的作法)
: #pragma src //在int main 前 加上
: int main()
: {
: .
: .
: .
: # pragma asm //使用組語開頭加
: .
: .
: .
: # pragma endasm //使用組語結束後加
: }
印象中好像也是如此,會是你keilC 設定的問題嗎?
: 6.組語的Delay 副程式 設定為10ms
: 但隨著動作變化需要的value (value*10ms) 怎麼加 C 裡面?
: 難道要
: R5, #10 // 10為value
: call Delay
: 這段直接加C程式裡面?
其實是否可以直接用 for-loop 內部使用 _nop_();
就可以了?!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.44.69.63
→
07/21 23:58, , 1F
07/21 23:58, 1F
→
07/21 23:58, , 2F
07/21 23:58, 2F
→
07/21 23:59, , 3F
07/21 23:59, 3F
→
07/21 23:59, , 4F
07/21 23:59, 4F
討論串 (同標題文章)