コンパイラについて
■ このスレッドは過去ログ倉庫に格納されています
0001トンマ
NGNGコンパイラ等はどうやって作ってるんでしょうか。
0101・・・みたいにこつこつ書いて作ってるんでしょうか。
たとえば今私がTURBOC使ってそれらしきもの作ったとしても
それはTURBOCが無ければできないので。
0002名無しさん
NGNG機械語を直接入力するのではなく、もう少し人間に分かりやすい形で記述し、
アセンブルしてバイナりオブジェクトを生成します。
TurboCだとインラインアセンブラって言うC言語の中にアセンブラを書く機能が使える筈です。
まぁ、興味があったらどうぞ。
0003>1
NGNGそもそもC言語自体がOS作成のために考案された言語。
0004名無しさん
NGNG0005>1
NGNG最も初期の段階では、当然マシン語で作るしか方法無いでしょう。
もちろん簡単なアセンブラを作る事から始まり、そのアセンブラを
使って高機能なアセンブラを作る。
その高機能アセンブラを使って、簡単なコンパイラを作り、その
簡単なコンパイラを使って高機能コンパイラを作る。
まぁ、これはコンピュータ黎明期であって、少なくともパソコンに
使われてるMPUでは、メインフレームを使ったクロス開発でしょう。
その昔、FORTRANでコーディングしたMPU用のクロス・アセンブラ
なんてたくさん有りましたので。
今はパソコンで動く言語の方が進んでるので、ちと想像できない世界
かもね。
0006>1
NGNGマシン語と、それに対応する数値を記した表があって、
それを見ながら紙と鉛筆でプログラミングし、
その数値を入力していったのです。
そして、そのうちにその表を完璧に覚えてしまう人が
出てきました。そういった先人達の努力の末に、
まずはアセンブラが誕生したのです。
C言語なんて随分後になってからです。その前に
B言語(正式名称失念)があります。設計者の奥さんの頭文字が
BなのでB言語です。Bの次だからC言語です。
聞いただけで脳味噌腐りそうな話ですが、全てホントの話です。
0007や
NGNGこれはよく言われているみたいだけどガセでは?
0008ほんとの話
NGNGたったまま、読んでいたら、腰掛けていた女子高生が
なにやら、ひそひそ話をして、
私の方を覗き見してました。
おにいちゃんは、Hの勉強をしてるんじゃないんだぞって
言ってやりたくなりました。
00092>8
NGNG俺?K&Rで覚えた。
0010>9
NGNG微笑ましかったけどね。
なおタイトルに何らかの意図があったのは、まったくその通りだと
多いますです。
K&Rで覚えたのはまっとうですね。
俺の場合翻訳本が無くて原著だったんだが、もう試行錯誤の世界
だった。
00112>10
NGNGいや、俺的には「コンパイラの作り方」がテーマな場所で「C言語の覚え方」の話をして欲しくなかっただけなんですが。
正直言って8がネタかどうかより、8で流れが変わってしまう事を避けたかったんですが。
さて。この辺で、このスレッドで「C言語の学習」のネタは止めましょうよ。>各位
0012名無しさん
NGNG0013名無しさん
NGNGすればいいのでyaccでパターンマッ
チングして文法をなぞってもらいます。
そうすると1+2+3が
(+ 1 (+ 2 3) )
の木構造をなぞる形で評価が進みます。
式が関数の形に落ちるので、
PUSH 2
PUSH 3
CALL ADD
PUSH RESULT;CALLの結果
PUSH 1
CALL ADD
IFは
1)PUSH CONDITION;条件式の結果
2)ラベルを作り、評価を反転する条件文ジャンプ文を吐く
イコールゼロならジャンプノーゼロ
3)THENの評価結果を吐く
4)ラベルを吐く
■ このスレッドは過去ログ倉庫に格納されています