rvtlc は自己記述可能なrvtlコンパイラです。rvtlc自身のソース(rvtlc.vtl)をrvtlcでコンパイルできます。
Linuxの実行ファイルを直接出力します。したがってリンカ(ld)もアセンブラも不要です。 出力された実行ファイルはそのファイル単独で動作し、libc等の共有ライブラリは不要です。
i386専用です。PowerPCやARMが動作する Linux 用のrvtlでは動作(クロスコンパイル)できません。
http://www.nk.rim.or.jp/~jun/rvtlc/rvtlc_20060516.tar.gz (90KB)
| README.TXT | このファイル |
| rvtlc.vtl | rvtl版コンパイラ |
| rvtlc | コンパイル済みコンパイラ |
| rt.bin | ランタイムライブラリ |
| rtl_source | ランタイムライブラリのソース |
| COPYING | GNU General Pulic Licence |
| gpl.text | GPLの日本語訳 |
例えば mycode.vtl というrvtlのソースプログラムをコンパイルするには rt.bin と rvtlc のあるディレクトリに mycode.vtlを置いて、以下のように実行します。
./rvtlc mycode.vtl
または、rvtl-3.03 が使用できる環境では以下のようにコンパイラのソースを使ってコンパイルできます。
rvtl rvtlc.vtl - mycode.vtl
rvtlc 自身は次のように作成しています。
rvtl rvtlc.vtl - rvtlc.vtl mv rvtlc.elf rvtlc
カレントディレクトリに mycode.elf というファイルができます。これは実行可能なファイルになっていて、./mycode.elf として実行できます。
mycode.vtl を次の内容のファイルとします。
100 "My first program." / 110 #=-1
mycode.vtl をコンパイルします。「jm:~/rvtlc$ 」はプロンプトなので入力する必要はありません。
jm:~/rvtlc$ ./rvtlc mycode.vtl read 2 lines file : mycode.elf 5620 bytes header size 128 library size 5284 code size 98 code starts from 0x080494A4 code ends at 0x08049505 Source Lines 2 Source Labels 0 File Name mycode.elf File Size 5620 heap size free : 429996 / 781312 bytes To check code, run : objdump -d --start-address=0x080494A4 mycode.elf time:0.000514sec
5620バイトの実行ファイルが 0.0005秒で作成できました。この mycode.elf 実行して確認します。
jm:~/rvtlc$ ./mycode.elf My first program.
この mycode.elf は Linux が動作する環境ならばどのPCでも実行できます。
objdump -d --start-address=0x080494A4 mycode.elf
のように実行するとコンパイルされたファイルを逆アセンブルできます。
: :
+---------------------------------------+ 0x08048000
.text | ELF Header領域 |
+---------------------------------------+ 0x08048080
| ランタイムライブラリ領域 |
+---------------------------------------+
| コード領域 最大350KB |
| |
+---------------------------------------+
: :
+=======================================+ 0x080A0000
.bss | ランタイムライブラリ作業領域 16KB |
+---------------------------------------+ 0x080A4000
| 変数領域 128ワード 1KB |
+---------------------------------------+
| 変数スタック 1024ワード 4KB |
+---------------------------------------+ &
| ヒープ領域 256KB 実行時に拡張可能 |
: :
| |
+---------------------------------------+ *
: :
| スタック領域 |
+---------------------------------------+
rvtl-3.03 と同じです。rvtlのコマンドのうちインタプリタ専用のコマンド(編集コマンド等)と組み込みコマンドのうちシェルとして使用するもの |cd,|ls,|md,|mv,|rd,|cw,|rm,|mo,|um,|sy,|cr,|ex,|pv,|so,|sf はサポートしていません。
|ca, |cm, |zz とフレームバッファ関連コマンドは使用できます。
for文の終了条件と制御変数の値は終了時に一致する必要があります。増分が1より大きい場合には注意してください。
文法の詳細は http://www.nk.ri.or.jp/~jun/rvtl/rvtl.htmlを参照して下さい。
このソフトはフリーソフトウェアです. GNU General Pulic Licenceにしたがって自由に使用,配布,改変して頂いてかまいません。GNU General Pulic Licence の詳細はCOPYINGを参照して下さい.GNU General Pulic Licence の日本語訳は gpl.text です.著作権は私(水谷 純, mizutani.jun@nifty.ne.jp)が保有しています。本ソフトウェアによって生じた損害について著作者は責任を負いません。また、著作者はバージョンアップの義務を負いません。