知識社群登入
位置: 艾鍗學院 Blog > 專業論壇 > 討論
軟硬體間的關係
1樓
我是c語言程設的學員
有些基礎的問題一直搞不通
1.我很好奇嵌入式程式(或一般程式)到底是以什麼形式儲存在電子元件中?是文字檔嗎?
2.課程說所有電腦構造(包含一整台電腦、一個滑鼠)都是由三大部分組成:中央處理(包括邏輯  控制)、記憶體(或暫存器)、I/O,我想請問是否所有元件都是如此,記憶體、鍵盤又是如何?而所謂的晶片又是如何定義?
3.嵌入式程式是儲存在哪裡,是記憶體嗎?還是所謂的"晶片上"?
4.不同cpu是否只看得懂不同的機器語言?那若是如此,不同cpu的編譯器是否隨cpu不同而不同?這樣老師在課程中說GNU"可移植性高"又是啥意思?
問題有點多  謝謝指導
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, 解決方案, 程式全都得改了....













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嗎?
謝謝指導
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
謝謝指導



  
 


5樓


 你的問題很多都和C程式沒有直接關係
  還是先回到C程式本身的主題上,有些東西你慢慢自然就會懂的.
  一步步學習,你一下子範圍拉太大,容易失去學習的焦點