導航:首頁 > 源碼編譯 > 編譯器如何識別代碼

編譯器如何識別代碼

發布時間:2023-03-19 11:19:43

❶ 代碼是怎麼被計算機識別,輸入或輸出的

最原始的工作原理,就是通過三極體
指出柵極起控製作用),給它的柵極輸入高電平(1)另外兩極就導通(1)或斷路(0),輸入低電平(0)另外兩極就斷路(0)或導通(1)。
然後由各種電子元器件組成各種門電路(與、或、非,同,四個門以及這四個玩意組合起來的門電路)、「鎖存電路」、「時序電路」等各種《數字邏輯電路》課程里會講到的電路。
在《計算機組成原理》課程里,會教你如何把這些電路組成加法器、減法器、乘法器……然後這些各種「器」以及上述各種門電路組成晶元,晶元的引腳就是上面提到的三極體之類某些原件的某些極。小一些的晶元只有編號編號,比如4001之類的,早期並沒有CPU的概念,所以早期的CPU也是用編號的,比如4004,8008,8080,8086……然後給某個引腳輸入高電平(1)或者低電平(2),裡面各種三極體會通通斷斷做一些改變,另外一些引腳就會在高電平(1)和低電平(0)之間做一些變化,就是你拿到的輸出。輸出連接到另一個晶元的某些引腳做輸入,然後就……這門課還會教你如何用微碼來編寫CPU的微碼指令,將讀到的機器碼轉化為對應的微碼程序,並用微碼程序實現機器碼命令的功能。
接下來《匯編語言》課程會教你寫匯編程序,匯編的編譯器會把你寫的東西翻譯成機器碼。
代碼,通過編譯器,編譯成匯編指令,最終翻譯成機器碼
機器碼對應的0和1,變成了引腳的高低電平,輸入給了解碼器,調用(解碼器輸出的信號轉換成了具體某個微碼程序的地址)指定的微碼程序,微碼程序改變CPU內部某些模塊的引腳的高低電平,控制具體的門電路,改變CPU某些引腳的輸出,這些輸出的引腳里,某幾個引腳的高低電平改變了匯流排的行為,匯流排將剩下的輸出信號給了指定硬體,比如內存/顯卡。。。指定硬體根據這些信號由不同硬體做了不同事。

❷ 編譯器如何識別字元是關鍵字還是變數名的

編譯過程大概分這么幾步
首先用有限狀態自動機把代碼文本分割成一個一個的token,每個token是一個意義單位,
比如
int main(123);
就被分割成了
int
main

123


然後對token列表根據該語言的語法建立語法樹,在建立語法樹的過程中就要區分某個單詞是關鍵字還是標識符(也就是變數名),一般來講編譯器一般都有一個保留字列表,開始的時候都當作變數名看待,如果發現某個變數名出現在了保留字列表裡,就對其進行標識處理。

❸ 計算機是如何識別C語言的

計算機是不能直接識別C語言的,它需要經過特殊的編譯器,編譯之後的二進制才能被計算機識別,計算機只能識別二進制代碼。

整個程序的編譯過程中有三個角色:程序員——編譯器——計算機。

程序員和編譯器之間的交流是C語言,同時編譯器也能把C語言經過翻譯成二進制指令。編譯器相當於程序員和計算機之間的翻譯官。

一個C語言程序的過程有以下步驟:
一、程序員使用C語言編寫代碼;
二、編譯把代碼翻譯成二進制指令;這里也有四個步驟:
a.預處理,這里主要處理頭文件,和程序中的一些宏代碼;
b.編譯,主要是把每個C語言文件編譯成二進制目標代碼;
c.鏈接,把上一步生成的目標代碼和庫文件進行鏈接,最終生成可執行程序。

以上就是C語言到計算機可識別代碼的轉換過程。

❹ c與c++語言編譯器是如何識別關鍵字

根據編譯器的不同,有不同的識別方式,例如VC6.0使用系統內建關鍵字列表,如果用戶定義變數的時候使用了系統默認的關鍵字,則會在編譯的時候產生錯誤。

附上:
C語言的關鍵字共有32個,根據關鍵字的作用,可分其為數據類型關鍵字、控制語句關鍵字、存儲類型關鍵字和其它關鍵字四類。

1 數據類型關鍵字(12個):
(1) char :聲明字元型變數或函數
(2) double :聲明雙精度變數或函數
(3) enum :聲明枚舉類型
(4) float:聲明浮點型變數或函數
(5) int: 聲明整型變數或函數
(6) long :聲明長整型變數或函數
(7) short :聲明短整型變數或函數
(8) signed:聲明有符號類型變數或函數
(9) struct:聲明結構體變數或函數
(10) union:聲明聯合數據類型
(11) unsigned:聲明無符號類型變數或函數
(12) void :聲明函數無返回值或無參數,聲明無類型指針(基本上就這三個作用)

(2)控制語句關鍵字(12個):
A循環語句
(1) for:一種循環語句(可意會不可言傳)
(2) do :循環語句的循環體
(3) while :循環語句的循環條件
(4) break:跳出當前循環
(5) continue:結束當前循環,開始下一輪循環
B條件語句
(1)if: 條件語句
(2)else :條件語句否定分支(與 if 連用)
(3)goto:無條件跳轉語句
C開關語句
(1)switch :用於開關語句
(2)case:開關語句分支
(3)default:開關語句中的「其他」分支
D
return :子程序返回語句(可以帶參數,也看不帶參數)

3 存儲類型關鍵字(4個)
(1)auto :聲明自動變數 一般不使用
(2)extern:聲明變數是在其他文件正聲明(也可以看做是引用變數)
(3)register:聲明積存器變數
(4)static :聲明靜態變數

4 其它關鍵字(4個):
(1)const :聲明只讀變數
(2)sizeof:計算數據類型長度
(3)typedef:用以給數據類型取別名(當然還有其他作用
(4)volatile:說明變數在程序執行中可被隱含地改變

❺ 計算機的01代碼是怎樣被識別的

明白這一點就好辦了 編譯器首先將你寫的代碼讀入內存.然後尋找代碼中的關鍵字.標識符等信息.建立一個所謂的符號表.根據這個符號表對你的源代碼進行檢查.檢查的依據正是該語言的語法和句法規則.比如是否有變數重復定義錯誤.是否有類型不兼容錯誤.是否有遺漏語句分隔符錯誤等等.這些都是比較簡單的.例如根據語言的關鍵字表可以檢查是否有非法的關鍵字(語句分隔符之後的下一個有效字元一定是一個關鍵字或已定義的標識符.因此很容易識別並挑出其中的關鍵字進行檢查).其它檢查也是類似的. 檢查沒有問題後.編譯器開始鏈接和映射操作(該過程在檢查階段也有使用).將你的源程序翻譯成匯編程序或其它中間程序.這一步是最復雜的.因為句法和語法比較簡單.但整個程序的邏輯卻復雜的多.而且編譯器還要負責在不改變代碼原意的前提下將代碼盡可能地進行優化. 最後就是將生成的匯編代碼翻譯為機器語言.這一步是最簡單的.因為匯編只是將機器語言簡單符號化而已.現在的編譯理論已經能夠確保將匯編代碼准確地翻譯為機器碼了.

❻ 用高級編程語言寫的代碼計算機是怎麼識別的

首先我要說明一下,您這個問題本來就有問題。
其實只有二進制文件計算機才直接識別,也就是bin文件。
用高級編程語言寫的代碼,通過編譯器或編程平台(像VC++,VC#.net之類的)轉化為可執行程序(exe文件),然後可以在操作系統中執行,說白了,通過用高級編程語言生成的可執行程序不能直接通過計算機去識別,它必須通過操作系統識別後,然後由操作系統向計算機硬體發出相應的處理信息。計算機硬體才能進行操作。(純屬個人見解)
兄弟我也只懂一點而已,還是一個在校學生,可能解釋得不太清楚。
我的QQ是:57862207,樂意和大家交流。

❼ 編譯器怎麼知道include的是庫文件還是其他目標文件

系統查詢。編譯器會自動進行系統查詢識別,所以是知道include里的目標文件的。編譯器就是將「一種語言(通常為高級語言)」翻譯為「另一種語言(通常為低級語言)」的程序。

❽ 編譯器 如何識別源程序是c或c++

例如linux下有
gcc
,windows下有ms
vs
系列。c的源程序經過這些編譯器每種平台都有自己的c編譯器的,再與各自平台的連接器就可以生成該平台下對應的二進制執行代碼了。
但由於c語言很多時候會涉及很多硬體級調用的,這個對平台依賴性極大。所以移植性這種東西,我只能說,哈哈

閱讀全文

與編譯器如何識別代碼相關的資料

熱點內容
php多長時間能學會 瀏覽:308
apex伺服器選什麼好 瀏覽:595
nds編譯 瀏覽:110
各個擊破法動態規劃法貪婪演算法 瀏覽:533
柱端部為什麼要加密 瀏覽:891
c單鏈表排序演算法 瀏覽:362
python鄰接鏈表 瀏覽:369
外國解壓的視頻說話助眠 瀏覽:115
查看php擴展版本 瀏覽:239
社保卡加密機放在信息中心 瀏覽:95
python3爬取網頁數據 瀏覽:621
超級主升幅圖公式源碼 瀏覽:22
2核2g伺服器有什麼用 瀏覽:494
cad命令欄怎麼顯示小黑 瀏覽:742
加密病毒數字幣 瀏覽:152
php讀取條碼 瀏覽:922
pdf字太小 瀏覽:765
單片機計算機教程 瀏覽:582
gh命令圖解 瀏覽:38
安卓還原網路設置會還原些什麼 瀏覽:432