b編譯語言
❶ 編譯器一般由哪種語言開發
其實我在想為什麼匯編語言生成一個簡單的編譯器後,可以用新生成的編譯器再次生成編譯器,例如,C語言開發C的編譯器呢?
這是一個遞歸的思想,舉個例子一看就明白了
用一個大的模具可以生成一個A模具,A模具可以做出來B模具,依次往下推,最終這個小模具可以做出來小盒子用來裝東西。
第一個大模具肯定是手工做出來的第一個模具,但是有了這個大模具後,後面就可以用他自動的生成更多的模具,後面的各種模具加起來又可以造出來更精緻的模具,
所以,自動第一個大模具造出來模具的時候,大模具就可以被拋棄了。
我們都知道編譯程序通常分為下面五個階段:
1)詞法分析
2)語法分析
3)語義分析與中間代碼產生
4)優化
5)目標代碼生成
當然最難的一點就是目標代碼的生成,這一階段實現了最終的翻譯,就是真正把原碼翻譯成可以被CPU直接計算的機器碼(NativeCode)。
❷ B語言和C語言 有什麼區別(越詳細越好)
不知道或者沒聽說過B語言的請不要憑著自己的感覺胡亂回答,誤人子弟。
B語言是貝爾實驗室開發的一種通用的程序設計語言,它是於1969年前後由美國貝爾實驗室的電腦科學家肯·湯普森(Ken
Thompson)在丹尼斯·利奇(Dennis
Ritchie)的支持下設計出來。後來,丹尼斯·利奇以B語言為基礎開發出C語言——目前世界上最常用的程序語言之一。自從被C語言取代之後,B語言幾乎已遭棄置。
B語言是從BCPL系統中刪減了湯姆森認為非必備的組件以便能運行在當時的小型計算機上而產生的。B語言還包括了湯姆森的一些個人偏好(主要在一些特定的程序中減少非空格字元的數量)。
和BCPL以及FORTH類似,B語言只有一種數據類型,計算機字。大部分操作將其作為整數對待(例如進行+、-、*、/操作),但其餘操作將其作為一個復引用的內存地址。在許多方面B語言更像是一個早期版本的C語言,它還包括了一些庫函數,其作用類似於C語言中的標准輸入/輸出函數庫。
下面是來自Ken
Thompson的B語言用戶手冊的例子:
/*
The
following
function
will
print
a
non-negative
number,
n,
to
the
base
b,
where
2<=b<=10,
This
routine
uses
the
fact
that
in
the
ANSCII
character
set,
the
digits
0
to
9
have
sequential
code
values.
*/
printn(n,b)
{
extrn
putchar;
auto
a;
if(a=n/b)
/*
assignment,
not
test
for
equality
*/
printn(a,
b);
/*
recursive
*/
putchar(n%b
+
'0');
}