Re: [問題] C 語言有機械週期嗎??

看板C_and_CPP作者 (準備再出發)時間15年前 (2009/07/21 23:43), 編輯推噓0(004)
留言4則, 1人參與, 最新討論串3/4 (看更多)
※ 引述《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
那副程式放陣列可以 unsigned char code[2]={light(),}
07/21 23:58, 1F

07/21 23:58, , 2F
這樣宣告??
07/21 23:58, 2F

07/21 23:59, , 3F
delay 這段 我是想將它 變成組語 所以如此問 ^^
07/21 23:59, 3F

07/21 23:59, , 4F
感謝大大耐心指導!!
07/21 23:59, 4F
文章代碼(AID): #1APU8v2S (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1APU8v2S (C_and_CPP)