2009年11月19日

DWARF 3 の対応言語

まつもとゆきひろさんによって開発が開始されたオブジェクト指向スクリプト言語Rubyを初めとして、趣味/仕事を問わず、新しいプログラミング言語を設計/開発したいという需要は昔から一定数存在するようです。

言語処理系に関する本は昔から多数出版されてきていて、去年と今年、日本語の本だけでも10冊以上は出ているのではないかと思います。今年出版された日本語のものだけでも、5冊以上あります。

コンパイラ - 原理・技法・ツール (第二版)
プログラミング言語を作る
ふつうのコンパイラをつくろう 言語処理系をつくりながら学ぶコンパイルと実行環境の仕組み
※ 以下の3冊は、私は未読です。amazonの検索でヒットしたもの。
MLによる最新コンパイラ構成技法
やさしいインタープリタの作り方入門―オリジナルなインタープリタを作成する
やさしいコンパイラの作り方入門―オリジナルなコンパイラを作成する

さらに、11/20 に、コンパイラの構成と最適化の第二版も出ます。

インタプリタやほとんど最適化しないレベルの言語処理系ならば問題にはならないのかもしれませんが、プログラムを高速に実行しようと思うと、途中に変換や最適化が必ず入ってくるので、元のソースコードと生成物の乖離が進みます。効率的に最適化されたプログラムをデバッグするためには、デバッグ情報が不可欠です。

しかし、ソースコードの解釈方法や、機械語の生成方法については多数の文献が存在するわりには、デバッグ情報の生成について触れている本はあまり (私が知る限り、一冊も) 聞きません。デバッガベンダーとしては少し悲しいところです。

翻ってデバッグ情報 (DWARF3) の仕様を見てみると、以下のような言語への対応が仕様に入っているようです。ほとんどが伝統的な言語とその後継ですが、D 言語が入っているというのが個人的には意外でした。(D は 2007 年にDigital Mars 社からバージョン 1.0 のコンパイラが出たばかりの、かなり若い言語です。あと Unified Parallel C という言語は初耳です。)



以下のタグは、コンパイル単位エントリの一項目に使用されます。

DW_LANG_C89 (ISO C:1989)
0x0001
DW_LANG_C (Non-standardized C, such as K&R)
0x0002
DW_LANG_Ada83 (ISO Ada:1983) ※ 限定的サポート
0x0003
DW_LANG_C_plus_plus (ISO C++:1998)
0x0004
DW_LANG_Cobol74 (ISO Cobol:1974) ※ 限定的サポート
0x0005
DW_LANG_Cobol85 (ISO Cobol:1985) ※ 限定的サポート
0x0006
DW_LANG_Fortran77 (ISO FORTRAN 77)
0x0007
DW_LANG_Fortran90 (ISO Fortran 90)
0x0008
DW_LANG_Pascal83 (ISO Pascal:1983)
0x0009
DW_LANG_Modula2 (ISO Modula-2:1996)
0x000a
DW_LANG_Java (Java)
0x000b
DW_LANG_C99 (ISO C:1999)
0x000c
DW_LANG_Ada95 (ISO Ada:1995) ※ 限定的サポート
0x000d
DW_LANG_Fortran95 (ISO Fortran 95)
0x000e
DW_LANG_PLI (ANSI PL/I:1976) ※限定的サポート
0x000f
DW_LANG_ObjC (Objective-C)
0x0010
DW_LANG_ObjC_plus_plus (Objective-C++)
0x0011
DW_LANG_UPC (Unified Parallel C)
0x0012
DW_LANG_D (D) ※ 限定的サポート
0x0013
DW_LANG_lo_user
0x8000
DW_LANG_hi_user
0xffff


トラックバックURL

コメントする

名前
 
  絵文字
 
 
記事検索
最新コメント
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

QRコード
QRコード