當前位置:首頁 » 編程語言 » c語言直接與硬體交互
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言直接與硬體交互

發布時間: 2022-06-28 11:02:46

1. c語言能對硬體直接操作是什麼意思,小弟初學者,請高手解答!非常感謝!!!

C語言允許直接訪問物理地址,能進行位(bit)操作,能實現匯編語言的大部分功能,可以直接對硬體進行操作。因此有人把它稱為中級語言。也就是說,C語言可以直接對物理地址進行操作。

學習指針是學習C語言中最重要的一環,能否正確理解和使用指針是我們是否掌握C語言的一個標志。

在計算機中,所有的數據都是存放在存儲器中的。一般把存儲器中的一個位元組稱為一個內存單元,不同的數據類型所佔用的內存單元數不等,如整型量佔2個單元,字元量佔1個單元等,在前面已有詳細的介紹。為了正確地訪問這些內存單元,必須為每個內存單元編上號。根據一個內存單元的編號即可准確地找到該內存單元。內存單元的編號也叫做地址。 既然根據內存單元的編號或地址就可以找到所需的內存單元,所以通常也把這個地址稱為指針。 內存單元的指針和內存單元的內容是兩個不同的概念。 可以用一個通俗的例子來說明它們之間的關系。我們到銀行去存取款時, 銀行工作人員將根據我們的帳號去找我們的存款單, 找到之後在存單上寫入存款、取款的金額。在這里,帳號就是存單的指針, 存款數是存單的內容。對於一個內存單元來說,單元的地址即為指針,其中存放的數據才是該單元的內容。在C語言中,允許用一個變數來存放指針,這種變數稱為指針變數。因此,一個指針變數的值就是某個內存單元的地址或稱為某內存單元的指針。

2. C語言可以直接對硬體進行操作嗎

不能。
首先,C語言不能夠直接對硬體進行操作。從本質上來說,連匯編語言都不可以。只有機器語言能夠直接操作硬體。
其次,C語言要操作硬體是必須經過一系列的編譯轉換。最終它會成為0101的機械碼,這個時候它根本不是我們所能夠理解的C語言了。
以GCC編譯器為例,這個可以分為四步。
第一步是預處理,包括語法檢查等工作。 gcc -P abc.c 第二步由源程序生產匯編語言代碼。 gcc -S abc.c 會生成abc.s文件,這個文件里就是匯編代碼。 第三步編譯器生成目標代碼,一個源文件生成一個目標代碼。 gcc -c abc.c 會生成abc.o 第四步連接器從目標代碼生成可執行文件。 gcc abc.o
最後,相對來說,C語言在高級語言當中是最貼近物理層面的語言。它也被稱作高級語言裡面的低級語言。因為它很多方面都非常貼近硬體。典型的就是指針,這是一種通過物理地址直接操作內存的變數。

3. c語言為什麼可以實現操作硬體的功能

樓上的描述不準確,c語言直接對硬體操作的例子比如直接通過c語言寫入晶元的控制寄存器,配置晶元的工作模式,達到用戶希望的效果,如定時器。這一點類似於單片機。
對內存的操作事實上還是由更低級的存儲器控制晶元完成的。

4. 都說C語言可以直接操作硬體

不能。

  1. 首先,C語言不能夠直接對硬體進行操作。從本質上來說,連匯編語言都不可以。只有機器語言能夠直接操作硬體。

  2. 其次,C語言要操作硬體是必須經過一系列的編譯轉換。最終它會成為0101的機械碼,這個時候它根本不是我們所能夠理解的C語言了。

  3. 以GCC編譯器為例,這個可以分為四步。

第一步是預處理,包括語法檢查等工作。
gcc -P abc.c
第二步由源程序生產匯編語言代碼。
gcc -S abc.c
會生成abc.s文件,這個文件里就是匯編代碼。
第三步編譯器生成目標代碼,一個源文件生成一個目標代碼。
gcc -c abc.c
會生成abc.o
第四步連接器從目標代碼生成可執行文件。
gcc abc.o

最後,相對來說,C語言在高級語言當中是最貼近物理層面的語言。它也被稱作高級語言裡面的低級語言。因為它很多方面都非常貼近硬體。典型的就是指針,這是一種通過物理地址直接操作內存的變數。

5. 用C語言寫的程序怎麼與硬體聯系起來

通過串口和單片機就能聯系起來了! 你的計算器實現的功能是按鍵加減乘除等等 單片機上有按鍵,只要你編程沒錯 接上之後就可以了 然後做成實物需要買板子以及電阻之類的器件焊接而成,最後把程序拷到單片機里 就可以了! 對了,我覺得你可以買本這方面的書當參考,不用別的書 大學工科類單片機教材就可以的!

6. C語言怎樣直接實現控制硬體

  1. 如果是電腦程序的話,譬如你在vc6.0裡面c語言裡面編寫一個程序,那麼vc6裡面的編譯器會把你的c語言語句按照對應的關系翻譯成你計算機能識別的計算機語句,然後你電腦cpu會按照這些指令來控制你的硬碟,內存讀寫之類的硬體操作。

  2. 如果是單片機之類的話,譬如你在keil裡面用c語言編寫了一個單片機程序,那麼keil的編譯器會把你的c語言程序編寫成匯編語言程序文件,然後把那個匯編程序文件燒到單片機晶元上就可以讓晶元按照指令工作了。

7. 為什麼都說C語言能直接訪問硬體

C語言是直接封裝的匯編語言,它的封裝性比起java、c#等高級語言要差很多,而匯編語言是使用的cpu等硬體的指令集,所以說C語言可以直接訪問某些硬體。

8. C語言怎麼寫直接在硬體上運行的代碼

誰告訴你Linux全是用C寫的?沒有任何操作系統可以完全由高級語言來編寫。直到現在Linux依然有10%到20%的底層系統是由匯編語言來寫。這部分負責直接參與分配內存和控制CPU工作分配,而這些工作是C無法做到的。單片機里存有已經用匯編語言所寫的C語言的運行系統,所以可以直接調用。如果你在一台沒有安裝任何系統的電腦上運行C程序是絕對不可能的。誰來給你分配內存?誰來調整進度的分配和調用?你以為C程序可以自己做到這些?

9. 為什麼說C語言是直接對硬體操作的語言

VB不行
語言從低級到高級,語義功能越來越完善(意思是寫出來的程序越來越接近人類語言),但是同時失去了對硬體的直接操縱能力,而且執行效率越來越低。
比如最低級的機器語言(全部是各種數字),沒學過根本看不出是什麼意思,但是對硬體操縱能力最強,想怎麼讓硬體做硬體就會怎麼做。執行效率為百分之百。
其次是匯編語言,匯編語言稍微向英語邁進了一點,但是很有限,一般人也看不明白的,比如這句
mov
a,b
誰知道什麼意思!其操縱硬體能力也極強,隨心所欲,執行效率基本也是百分之百。
而C語言介於高級和低級之間,代碼容易理解,還可以用指針操縱硬體(不過還是很局限的,CPU就無法之間操縱了),執行效率為80%,對於一直語言來說很不錯了。
Basic語言完全是高級語言,代碼簡單,但是不具備操縱硬體能力,也就是你想寫個代碼直接讓內存怎麼怎麼樣,內存不聽你的,只聽編譯好的程序的。而且執行效率也很低了。

10. c語言可以直接對硬體操作嗎

害,這個問題怎麼說呢,操作系統才是直接對硬體進行操作的,如果操作系統使用C語言編寫,那麼宏觀上看上去就變成了C語言對硬體進行了操作,但用戶編程的c語言程序是不可以直接對硬體進行操作的,必須調用操作系統提供的服務才可以對硬體進行操作,比如printf函數.