.NET Frameworkの実行ファイルは拡張子がexeであるが、コマンドプロンプトのildasmコマンドで拡張子ilのアセンブリファイルが生成される。これをILと言うっぽいのだが、Dt言語に向けてちょっと触ってみたわけだ。作ってみたコードを紹介するが、その前にまずDt言語のコンパイルについて今思い浮かんでいる流れをここに書いておく。
すなわち「Dt言語のコードをコンパイラに渡す→コードをパース、ILコード生成→ILコードをアセンブル」の流れだ。
分割コンパイルはどうすんだとかプリプロセッサはどうしたとかの声は聞こえないふりをしておく。そんなものプロトタイプが完成してから考えればいい。
で、今回書いたコードがこれだ。
01:.assembly test{}
02:
03:.method public static int32 test_mul(int32,int32) cil managed
04:{
05: .locals init (int32 V_0,int32 V_1)
06: ldarg.0
07: ldarg.1
08: mul
09: ret
10:}
11:
12:.method public static void Main(string[] args)cil managed
13:{
14: .entrypoint
15: ldstr "一つ目を入力"
16: call void [mscorlib] System.Console::WriteLine(string)
17: call string [mscorlib] System.Console::ReadLine()
18: call int32 [mscorlib] System.Int32::Parse(string)
19: ldstr "二つ目を入力"
20: call void [mscorlib] System.Console::WriteLine(string)
21: call string [mscorlib] System.Console::ReadLine()
22: call int32 [mscorlib] System.Int32::Parse(string)
23: call int32 test_mul(int32,int32)
24: call void [mscorlib] System.Console::WriteLine(int32)
25: ret
26:}
解説しようと思ったが自分でもよくわかってないのでやめた。