Mercurial > hg > Papers > 2010 > kent-master
comparison implementation.tex @ 5:dfb89e32eea1
added gcc.tex, conclusion.tex
and some sources.
writed abstraction.
author | kent <kent@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 08 Feb 2010 00:35:58 +0900 |
parents | 30c102343b37 |
children | 8ef81ff8cb52 |
comparison
equal
deleted
inserted
replaced
4:30c102343b37 | 5:dfb89e32eea1 |
---|---|
1 | |
2 \chapter{GCCにおける実装・改善} | 1 \chapter{GCCにおける実装・改善} |
3 \label{chp:impl} | 2 \label{chp:impl} |
4 | 3 |
5 この章では、GCCにおけるCbCコンパイラの実装方法と、 \ref{chp:cbc}章で洗 | 4 この章では、GCCにおけるCbCコンパイラの実装方法と、 \ref{chp:cbc}章で洗 |
6 い出したGCCでの問題点の改善を行う。 | 5 い出したGCCでの問題点の改善を行う。 |
424 この処理で全てのコードセグメントがfastcall対応となり、軽量継続の際には | 423 この処理で全てのコードセグメントがfastcall対応となり、軽量継続の際には |
425 レジスタ\verb|ecx,edx|に引数をのせることが可能となる。 | 424 レジスタ\verb|ecx,edx|に引数をのせることが可能となる。 |
426 | 425 |
427 | 426 |
428 \subsection{プロトタイプ自動生成} \label{sec:prototype} | 427 \subsection{プロトタイプ自動生成} \label{sec:prototype} |
429 Cのプロトタイプ宣言はコンパイル時のエラー検出に役立っている。 | 428 Cのプロトタイプ宣言はコンパイル時のエラー検出に役立っている。しかしCbC |
430 しかしCbCのコードセグメントには返り値は存在しない。また状態遷移記 | 429 のコードセグメントには返り値は存在しない。また状態遷移記述という性質上 |
431 述という性質上、プログラムを記述する際は上から下に実行順にコードセ | 430 、プログラムを記述する際は上から下に実行順にコードセグメントを並べるこ |
432 グメントを並べることが多いため、プロトタイプ宣言をするとそれが膨大 | 431 とが多いため、プロトタイプ宣言をするとそれが膨大な数になる。 |
433 な数になる。 | |
434 | 432 |
435 また、mcベースコンパイラの方ではプロトタイプ宣言を減らすため、一種の簡 | 433 また、mcベースコンパイラの方ではプロトタイプ宣言を減らすため、一種の簡 |
436 単な型推論を実装している。そのためこれまでに作られたCbCのプログラムで | 434 単な型推論を実装している。そのためこれまでに作られたCbCのプログラムで |
437 は特殊な場合を除いてプロトタイプ宣言がほとんどなく、GCCでコンパイルす | 435 は特殊な場合を除いてプロトタイプ宣言がほとんどなく、GCCでコンパイルす |
438 る際に問題となる。 | 436 る際に問題となる。 |
439 | 437 |
440 この問題に暫定的に対処するため、Pythonを用いてプロトタイプの自動生成を | 438 これらの問題に暫定的に対処するため、Pythonを用いてプロトタイプの自動生 |
441 行うスクリプトを作成した。このスクリプトでは関数の定義部を正規表現で検 | 439 成を行うスクリプトを作成した。このスクリプトでは関数の定義部を正規表現 |
442 索し、マッチする部分を変換して関数宣言として出力する。 | 440 で検索し、マッチする部分を変換して関数宣言として出力する。 |
443 | |
444 全コードは付録\ref{apx:make-prototype}に掲載する。 | 441 全コードは付録\ref{apx:make-prototype}に掲載する。 |
445 | 442 |
443 このプトロタイプ自動生成により、これまでに作られたCbCのプログラムとの | |
444 互換性が確保できた。 | |
445 | |
446 % TODO: prototype declaration | 446 % TODO: prototype declaration |
447 | 447 |
448 | 448 |