⑴ 計算機的01代碼是怎樣被識別的
明白這一點就好辦了 編譯器首先將你寫的代碼讀入內存.然後尋找代碼中的關鍵字.標識符等信息.建立一個所謂的符號表.根據這個符號表對你的源代碼進行檢查.檢查的依據正是該語言的語法和句法規則.比如是否有變數重復定義錯誤.是否有類型不兼容錯誤.是否有遺漏語句分隔符錯誤等等.這些都是比較簡單的.例如根據語言的關鍵字表可以檢查是否有非法的關鍵字(語句分隔符之後的下一個有效字元一定是一個關鍵字或已定義的標識符.因此很容易識別並挑出其中的關鍵字進行檢查).其它檢查也是類似的. 檢查沒有問題後.編譯器開始鏈接和映射操作(該過程在檢查階段也有使用).將你的源程序翻譯成匯編程序或其它中間程序.這一步是最復雜的.因為句法和語法比較簡單.但整個程序的邏輯卻復雜的多.而且編譯器還要負責在不改變代碼原意的前提下將代碼盡可能地進行優化. 最後就是將生成的匯編代碼翻譯為機器語言.這一步是最簡單的.因為匯編只是將機器語言簡單符號化而已.現在的編譯理論已經能夠確保將匯編代碼准確地翻譯為機器碼了.
⑵ 編譯器怎麼知道include的是庫文件還是其他目標文件
系統查詢。編譯器會自動進行系統查詢識別,所以是知道include里的目標文件的。編譯器就是將「一種語言(通常為高級語言)」翻譯為「另一種語言(通常為低級語言)」的程序。
⑶ 用高級編程語言寫的代碼計算機是怎麼識別的
首先我要說明一下,您這個問題本來就有問題。
其實只有二進制文件計算機才直接識別,也就是bin文件。
用高級編程語言寫的代碼,通過編譯器或編程平台(像VC++,VC#.net之類的)轉化為可執行程序(exe文件),然後可以在操作系統中執行,說白了,通過用高級編程語言生成的可執行程序不能直接通過計算機去識別,它必須通過操作系統識別後,然後由操作系統向計算機硬體發出相應的處理信息。計算機硬體才能進行操作。(純屬個人見解)
兄弟我也只懂一點而已,還是一個在校學生,可能解釋得不太清楚。
我的QQ是:57862207,樂意和大家交流。
⑷ 編譯器如何識別字元是關鍵字還是變數名的
編譯過程大概分這么幾步
首先用有限狀態自動機把代碼文本分割成一個一個的token,每個token是一個意義單位,
比如
int main(123);
就被分割成了
int
main
(
123
)
然後對token列表根據該語言的語法建立語法樹,在建立語法樹的過程中就要區分某個單詞是關鍵字還是標識符(也就是變數名),一般來講編譯器一般都有一個保留字列表,開始的時候都當作變數名看待,如果發現某個變數名出現在了保留字列表裡,就對其進行標識處理。
⑸ 代碼是怎麼被計算機識別,輸入或輸出的
最原始的工作原理,就是通過三極體
指出柵極起控製作用),給它的柵極輸入高電平(1)另外兩極就導通(1)或斷路(0),輸入低電平(0)另外兩極就斷路(0)或導通(1)。
然後由各種電子元器件組成各種門電路(與、或、非,同,四個門以及這四個玩意組合起來的門電路)、「鎖存電路」、「時序電路」等各種《數字邏輯電路》課程里會講到的電路。
在《計算機組成原理》課程里,會教你如何把這些電路組成加法器、減法器、乘法器……然後這些各種「器」以及上述各種門電路組成晶元,晶元的引腳就是上面提到的三極體之類某些原件的某些極。小一些的晶元只有編號編號,比如4001之類的,早期並沒有CPU的概念,所以早期的CPU也是用編號的,比如4004,8008,8080,8086……然後給某個引腳輸入高電平(1)或者低電平(2),裡面各種三極體會通通斷斷做一些改變,另外一些引腳就會在高電平(1)和低電平(0)之間做一些變化,就是你拿到的輸出。輸出連接到另一個晶元的某些引腳做輸入,然後就……這門課還會教你如何用微碼來編寫CPU的微碼指令,將讀到的機器碼轉化為對應的微碼程序,並用微碼程序實現機器碼命令的功能。
接下來《匯編語言》課程會教你寫匯編程序,匯編的編譯器會把你寫的東西翻譯成機器碼。
代碼,通過編譯器,編譯成匯編指令,最終翻譯成機器碼
機器碼對應的0和1,變成了引腳的高低電平,輸入給了解碼器,調用(解碼器輸出的信號轉換成了具體某個微碼程序的地址)指定的微碼程序,微碼程序改變CPU內部某些模塊的引腳的高低電平,控制具體的門電路,改變CPU某些引腳的輸出,這些輸出的引腳里,某幾個引腳的高低電平改變了匯流排的行為,匯流排將剩下的輸出信號給了指定硬體,比如內存/顯卡。。。指定硬體根據這些信號由不同硬體做了不同事。
⑹ 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:說明變數在程序執行中可被隱含地改變
⑺ 計算機是如何識別C語言的
計算機是不能直接識別C語言的,它需要經過特殊的編譯器,編譯之後的二進制才能被計算機識別,計算機只能識別二進制代碼。
整個程序的編譯過程中有三個角色:程序員——編譯器——計算機。
程序員和編譯器之間的交流是C語言,同時編譯器也能把C語言經過翻譯成二進制指令。編譯器相當於程序員和計算機之間的翻譯官。
一個C語言程序的過程有以下步驟:
一、程序員使用C語言編寫代碼;
二、編譯把代碼翻譯成二進制指令;這里也有四個步驟:
a.預處理,這里主要處理頭文件,和程序中的一些宏代碼;
b.編譯,主要是把每個C語言文件編譯成二進制目標代碼;
c.鏈接,把上一步生成的目標代碼和庫文件進行鏈接,最終生成可執行程序。
以上就是C語言到計算機可識別代碼的轉換過程。
⑻ 在預處理器macros,如何識別平台/編譯器
1.預處理首先源代碼文件(.c/.cpp)和相關頭文件(.h/.hpp)被預處理器cpp預編譯成.i文件(C++為.ii)。預處理命令為:gcc–Ehello.c–ohello.i預編譯過程主要處理那些源代碼中以#開始的預編譯指令,主要處理規則如下:u將所有的#define
⑼ 哪位大牛能告訴我,c語言中的'&'這個符號,到底編譯器是怎麼識別並運用它的
'&'是多功能運算符,至於如何解釋該符號,編譯器是根據「上下文」來判斷的。
由於在C中每個變數必須先聲明後使用,比如有聲明 :
int x = 3,y = 5,z;
int *p,fun(int &, int &); // 這里顯然是引用操作符啦!
對於
z = x & y; // 很明顯的,這是邏輯與(and)運算
x &= y; // 這里也是
p = &x; // 這是取址運算,注意,新版的C中沒有 =& 雙目運算符
-----------------------------------------------------------------------------------------------------------------------
在C++中,有運算符重載函數,比如
aClass operator&(const aClass &x,const aClass &y);,功能是實施類x和y的邏輯與,並返回aClass的實例,這里operator&中的「&」是被重載的運算符,&x,&y中的「&」是引用操作符。
----------------------------------------------------------------------------------------------------------------------
如果你希望了解編譯程序的細節,請參考相關書籍。
⑽ 編程語言是怎樣被硬體識別和執行的
一、識別
計算機只能識別「0」和「1」兩個數(或兩個狀態),為了使計算機能處理復雜多樣的信息,就必須把這些信息轉換為用「0」和「1」表示的代碼( 用「0」和「1」表示的代碼稱為二進制編碼,為了編程的方便,人們常用的編碼方式有十進制、十六進制、BCD碼、ASCII碼等,通過解碼器譯成二進制碼)。在計算機中,編碼的最小單位為比特( bit ),1 比特就是一位二進制數碼( 一個0或一個1 )。8位連續的二進制數碼組成 1 個位元組( Byte,1 位元組 = 8 bit )。二進制碼也稱為機器語言。
二、執行
二進制碼通過邏輯門電路,觸發電路轉換為高、低電平輸出,進而驅動外圍硬體電路,實現相應的功能。