軟硬體間的關係
(酷比, givebirthday@yahoo.com.tw, 2012-07-02 20:19)
1樓
我是c語言程設的學員
有些基礎的問題一直搞不通
1.我很好奇嵌入式程式(或一般程式)到底是以什麼形式儲存在電子元件中?是文字檔嗎?
2.課程說所有電腦構造(包含一整台電腦、一個滑鼠)都是由三大部分組成:中央處理(包括邏輯 控制)、記憶體(或暫存器)、I/O,我想請問是否所有元件都是如此,記憶體、鍵盤又是如何?而所謂的晶片又是如何定義?
3.嵌入式程式是儲存在哪裡,是記憶體嗎?還是所謂的"晶片上"?
4.不同cpu是否只看得懂不同的機器語言?那若是如此,不同cpu的編譯器是否隨cpu不同而不同?這樣老師在課程中說GNU"可移植性高"又是啥意思?
問題有點多 謝謝指導
(DIckson, 2012-07-03 11:24)
2樓
1.我很好奇嵌入式程式(或一般程式)到底是以什麼形式儲存在電子元件中?是文字檔嗎?
binary
2.課程說所有電腦構造(包含一整台電腦、一個滑鼠)都是由三大部分組成:中央處理(包括邏輯 控制)、記憶體(或暫存器)、I/O,我想請問是否所有元件都是如此,記憶體、鍵盤又是如何?而所謂的晶片又是如何定義?
若看記憶體, 其內部結構也是有輸入(位址及資料輸入及控制訊號輸入),輸出(資料輸出及狀態訊號輸出)及處理單元(包括解碼及邏輯控制等)
chip(積體電路): 把電路(主要包括半導體裝置,也包括被動元件等)小型化的方式,並通常製造在半導體晶圓表面上 (from Wiki)
而記憶體本身就是一個chip
3.嵌入式程式是儲存在哪裡,是記憶體嗎?還是所謂的"晶片上"?
嵌入式程式是儲存在ROM, EEPROM, NVRAM ,Flash等這類Non-volatile memory
可以是外接也可以是內建 (晶片設計時整合進去)
4.不同cpu是否只看得懂不同的機器語言?那若是如此,不同cpu的編譯器是否隨cpu不同而不同?這樣老師在課程中說GNU"可移植性高"又是啥意思?問題有點多 謝謝指導
每一個CPU只能讀懂自己的Machine code, 看不懂別人的. 0011101011111
為了讓別人能控制他們的CPU, 每家CPU 廠商都會設計自己的指令(組合語言), 讓別人可以寫程式(即組合這些指令)來控制,
只要透過自已開發的或third party開發組譯器Assembler, 將這些程式翻譯成自家的Machine code.,就可以讓自家的CPU讀懂
但這種用組合語言指令寫好的程式,和特定廠商的CPU 綁得太緊,如果換了別家的CPU,程式就得重寫
所以高階C語言,出現,程式寫一樣的,只要換編譯器就好了,就能產生出不同CPU廠商的Machine code.
如果你要開發電子耳溫槍, 可以用TI 的解決方案, 也可以用microchip解決方案, 或其他家的.
但如果你是組語寫, 換了另一家的CPU, 解決方案, 程式全都得改了....
(酷比, givebirthday@yahoo.com.tw, 2012-07-03 21:35)
3樓
我要先澄清一下 我知道我的問題很基本 但是我的電腦才剛起步 所以查資料都是一大堆名詞看不懂 所以才用問的....
1.所以記憶體中,除了有專門供應電腦暫存的記憶體外,還有專門儲存程式的Non-volatile memory?
2.假設我現在在word打字(word打字不是都有暫存檔存在記憶體?),那儲存的步驟是不是如下所述:word的應用程式→os→cpu暫存器→然後cpu運算邏輯中心讀取嵌入式程式,然後對記憶體發出控制訊號(和word的暫存檔內容??)..................後面亂掉了??
3.所以程式是以二進位的形式儲存在Non-volatile memory,那老師上課說;處理單元會做的事只有把暫存器的程式一條一條拿來讀,請問是程式執行的時候會先把程式暫存在暫存器嗎?
4.所以一個chip可能同時包含輸入、輸出及處理單元,或有可能只包含其中的一兩個?
5.(假設我現在在寫3種不同cpu的程式),我們先寫好一種c語言,然後再用"3組不同的compiler和assembler"就可以達成我們的目的了?那老師說GNU"可移植性高"又是啥意思?不同的cpu不是要用不同的compiler嗎?
謝謝指導
(DIckson, 2012-07-03 22:05)
4樓
1.所以記憶體中,除了有專門供應電腦暫存的記憶體外,還有專門儲存程式的Non-volatile memory?
Memory type: volatile memory : RAM, SRAM, DRAM
Non-volatilememory: EEPROM, FLASH
2.假設我現在在word打字(word打字不是都有暫存檔存在記憶體?),那儲存的步驟是不是如下所述:word的應用程式→os→cpu暫存器→然後cpu運算邏輯中心讀取嵌入式程式,然後對記憶體發出控制訊號(和word的暫存檔內容??)..................後面亂掉了??
不知你要問什麼
3.所以程式是以二進位的形式儲存在Non-volatile memory,那老師上課說;處理單元會做的事只有把暫存器的程式一條一條拿來讀,請問是程式執行的時候會先把程式暫存在暫存器嗎?
程式放在指令暫存器,進行解碼!
4.所以一個chip可能同時包含輸入、輸出及處理單元,或有可能只包含其中的一兩個?
也許只有輸入,輸出,那就是 input =output 而已
5.(假設我現在在寫3種不同cpu的程式),我們先寫好一種c語言,然後再用"3組不同的compiler和assembler"就可以達成我們的目的了?
是的
那老師說GNU"可移植性高"又是啥意思?沒前後文不懂~但好像也不是那麼重要
不同的cpu不是要用不同的compiler嗎?不同架構的CPU 會有有不同的compiler, 但可以有很多家廠商開發自己的compiler, for 同一種架構的CPU
謝謝指導
(joseph, 2012-07-04 08:35)
5樓
你的問題很多都和C程式沒有直接關係
還是先回到C程式本身的主題上,有些東西你慢慢自然就會懂的.
一步步學習,你一下子範圍拉太大,容易失去學習的焦點