Compiler Construction Lecture 11/27

先週の復習

先週は、Makefileの使い方について簡単な勉強をした。Makefile は、自分のソフトウェアプロジェクトの構成を示すものなので、 必ず作成するようにしよう。

レジスタを使ったコンパイルの復習

まず、PowerPCの命令について調べて見よう。 RowerPCの命令の一部

次にAIXでのCコンパイラの出力を調べて見よう。前に勉強したように、

cc -S input.c
という形で、アセンブラ出力を得ることができる。(もちろん、ccがない 時には、自分でマニュアルを読んで、アセンブラの出力を考えることになる)

問1

0+(1+(2+3))-(0+(1+(2+3))) の式の計算をsimple compiler によりRS6000の命令に変換した結果を記述せよ。0+1+2+3-0+1+2+3 の場合はどうなるか? RS6000には、

ai[.]   ai r3,r1,-45    r3=r1+(-45)     add immediate [set flag CR0]
                                        16bit singed constatnd
という命令がある。これを使った場合はもっと短いコードになる。 この命令を出力するcompilerを作るには、どうすれば良いか考察し てみよ。

問2

s-code-rs6k.c s-code-rs6k-r.c を使った、 s-rs6k と s-rs6k-r について、論理演算 &,| を拡張して見よう。余裕が あれば他の拡張にも挑戦して見よう。

Micro-Cの全体構成

これから、Micro-C をざっと読みながら、より詳細な技術について解説して いく。そのまえに、Micro-C の全体構成をざっと見て見よう。

Micor-C の全体構成

字句解析 getsym



宿題

来週までに、 問1と問2を Compiler Construction Lecture 11/27 のSubjectを付けて kono@ie.u-ryukyu.ac.jp までメールすること。



Kono's home page http://bw-www.ie.u-ryukyu.ac.jp/~kono/