前のページ
逆コンパイラについて 投稿者:Isson  投稿日: 7月21日(金)07時01分55秒

徳丸さん、お久しぶりです。
たまたま逆コンパイラの話題があったので書き込みしました。

逆コンパイラらしきもの?ならソースがありますよ。どこで見つけたか忘れましたけど。
(Generates C code for each procedure.の記述がある)

ソースをDLしてコンパイルしてみたのですが使い方が分かりませんでした。
ちょっと僕では手に負えないんですが、誰か見てもらえませんか?


ステートメント・レベルでは・・・ 投稿者:徳丸  投稿日: 7月17日(月)19時19分18秒

〉その構文木は式に対してだけ作るんですか?
〉文の場合は作らない?

 これは場合によりますね。簡易なコンパイラであれば、直接コード生成してしまうだろうし、
場合によってはステートメント・レベルで構文木を作る場合もあるでしょう。
 要は、コンパイラを作る人が、作りやすい方法を選べば良いだけだと思いますよ。

http://www.tokumaru.org/


式に構文木?では文には? 投稿者:Toba  投稿日:07月15日(土)18時37分31秒

徳丸さんこんにちは。

> 最適化
なるほど。やりやすくなるんですね。

> 作りやすさ
その構文木は式に対してだけ作るんですか?
文の場合は作らない?


構文木を作る理由 投稿者:徳丸  投稿日:07月15日(土)12時23分46秒

Tobaさん、ようこそ
構文木を作る理由ですが、

・作りやすさ
 yaccなど上昇系の構文解析を使うと、式がボトムアップに解析されていきます。そうすると、
式全体を見渡した処理ができないので、いったん構文木という形で「覚えて」おいて、式全体
の解析がすんでから、まとめて処理する方が、処理が楽と言う理由があります

・最適化のため
 前項とも関係しますが、最適化を行うためには、できるだけ広い範囲の情報があった方が、
最適が可能になり、またやりやすいと言えます。そのための一つの方法が、構文木です。

http://www.tokumaru.org/


構文木?解析木? 投稿者:Toba  投稿日:07月12日(水)06時07分25秒

大抵のインタプリタ、コンパイラなら内部で構文木、解析木を作ってから処理を
するそうですがなぜ作るんですか?


けいたろうさん、こんにちは 投稿者:徳丸  投稿日:07月01日(土)10時02分27秒

けいたろうさん、「インプリメンタの部屋」にようこそ。

逆コンパイラですか。逆アセンブラなら大昔(Z80の頃^^;)作ったことがありますが、
逆コンパイラは見たこともありませんねぇ。どなたか、知りませんか?

けいたろうさんは、逆コンパイラを使ってどんなことをしたいのでしょうか?それが
分かれば、アドバイスも受けやすいと思いますが。

http://www.tokumaru.org/


コンパイラ 投稿者:けいたろう  投稿日:06月30日(金)23時15分12秒

逆コンパイラソフト作ってくれませんか
自分はC言語は初心者なのでできあがっているプログラムを参考にしたいんですが
できれば初心者なので簡単な設定でできあがっているプログラムをソースプログラムに変換するプログラムを作ってほしいです


あっ、、 投稿者:わたぬ  投稿日:06月24日(土)20時21分38秒

X++が抜けてる。

NEXT:
 DECB
 BEQ ELSE
 LEA X 2,X
 BRA LOOP

これで正解、、、ははは。
つっこまれる前でよかった(^_^;


いえいえ、要素の個数を判定するくらいはしてましたよ。 投稿者:わたぬ  投稿日:06月24日(土)20時15分57秒

いつもリプライありがとうございます。
あのコンパイラは正確には PL/<STONG>Hといっていたような

MC68000のニモニック、もう忘れたんで MC6809で書きますと、、、、

LEA X,JMPTBL
LDB #JMPCTR
LOOP:
CMPA ,X+
BNE NEXT
JMP [,X]

NEXT:
DECB
BEQ ELSE
BRA LOOP


JMPTBL:
 FCB #$00, FDB #Address1
 FCB #$99, FDB #Address2

ではまた。
from (^^;)元Hな人。


re: CASE文 投稿者:徳丸  投稿日:06月24日(土)12時11分46秒

わたぬさん、こんにちは

〉私はMC68000システムのクロスPL/Mコンパイラをオンライン端末より利用していた
〉プログラマでした。

PL/Mとは懐かしい言葉ですね。1993年当時でも現役だったのですね。

〉このコンパイラはいつも決まったマシン語に展開するので面白くなかった事を覚え
〉ています。もちろんCase文の実装も、修飾レジスタと飛び先テーブルをつかって、
〉まるで教科書の例題のようなコードしか作ってくれませんでした。

へー、そうですか。これはPascal/P4と同じですね。だとすると(敢えてC言語で書きますが)
以下のようなコードは、

  swtich (n) {
  case 0:
    ...
    break;
  case 30000:
    ....
    break;
  }

なんてプログラムは膨大なジャンプテーブルができてしまうのでしょうか?

http://www.tokumaru.org/


前のページ