c#で、なでしこ その10

# 概要
c#で、なでしこ、やってみた。
c#な、なでしこ、見つけたので、msbuildでコンパイルしてみた。
調べてみた。

# なでしこ2の仮想バイトコード(IL)

 |    ニーモニック|意味|コード|スタック操作|
|:-|:-|:-|:-|
 |  NOP   	    | 何もしない  |  0x00 | args:0, push:0, pop:0 | 
 |  LD_CONST_INT	   | 定数をスタックに乗せる |  0x01 | args:1, push:1, pop:0 | 
 |  LD_CONST_REAL	  |定数をスタックに乗せる  |  0x02 | args:1, push:1, pop:0 | 
 |  LD_CONST_STR	   | 定数をスタックに乗せる |  0x03 | args:1, push:1, pop:0 | 
 |  LD_GLOBAL     | 変数をスタックに乗せる |  0x10 | args:1, push:1, pop:0 | 
 |  LD_LOCAL     | 変数をスタックに乗せる |  0x11 | args:1, push:1, pop:0 | 
 |  LD_GLOBAL_REF	  | 変数をスタックに乗せる |  0x12 | args:1, push:1, pop:0 | 
 |  LD_LOCAL_REF	   | 変数をスタックに乗せる |  0x13 | args:1, push:1, pop:0 | 
 |  ST_GLOBAL     | スタックから下ろして値を変数に記憶する |  0x20 | args:1, push:0, pop:1 | 
 |  ST_LOCAL      | スタックから下ろして値を変数に記憶する |  0x21 | args:1, push:0, pop:1 | 
 |  POP    | スタックから下ろして値を変数に記憶する |  0x22 | args:1, push:0, pop:1 | 
 |  NEW_ARR      | 配列 |  0x30 |  args:1, push:1, pop:0  | 
 |  ST_ELEM       | 配列 |  0x31 |  args:0, push:0, pop:3  | 
 |  LD_ELEM       | 配列 |  0x32 |  args:0, push:1, pop:2  | 
 |  LD_ELEM_REF	    | 配列 |  0x33 |  args:0, push:1, pop:2  | 
 |  ARR_LENGTH    | 配列 |  0x34 |  args:0, push:1, pop:1  | 
 |  ADD   	   | +する |  0x40 |  args:0, push:1, pop:2  | 
 |  SUB   	   | -する |  0x41 |  args:0, push:1, pop:2  | 
 |  MUL   	   | *する |  0x42 |  args:0, push:1, pop:2  | 
 |  DIV   	   | /する |  0x43 |  args:0, push:1, pop:2  | 
 |  MOD   	   | %する |  0x44 |  args:0, push:1, pop:2  | 
 |  POWER   	 | powする |  0x45 |  args:0, push:1, pop:2  | 
 |  ADD_STR      | 文字列連結する |  0x46 |  args:0, push:1, pop:2  | 
 |  EQ   	    | (==)比較する |  0x50 |  args:0, push:1, pop:2  | 
 |  NOT_EQ       | (!=)比較する |  0x51 |  args:0, push:1, pop:2  | 
 |  GT   	    | (<)比較する |  0x52 |  args:0, push:1, pop:2  | 
 |  GT_EQ   	 | (<=)比較する |  0x53 |  args:0, push:1, pop:2  | 
 |  LT   	    | (>)比較する |  0x54 |  args:0, push:1, pop:2  | 
 |  LT_EQ   	 | (>=)比較する |  0x55 |  args:0, push:1, pop:2  | 
 |  INC   	   | スタックトップの値を+1する |  0x56 |  args:0, push:1, pop:1  | 
 |  DEC   	   | スタックトップの値を-1する |  0x57 |  args:0, push:1, pop:1  | 
 |  NEG   	   | スタックトップの値を反転する |  0x58 |  args:0, push:1, pop:1  | 
 |  AND   	   | (AND)演算  |  0x59 |  args:0, push:1, pop:2  | 
 |  OR   	    | (OR)演算  |  0x5A |  args:0, push:1, pop:2  | 
 |  XOR   	   | (XOR)演算  |  0x5B |  args:0, push:1, pop:2  | 
 |  NOT   	   | (NOT)演算  |  0x5C |  args:0, push:1, pop:1  | 
 |  JUMP   	  | 無条件アドレスジャンプ |  0x60 |  args:1, push:0, pop:0  | 
 |  BRANCH_TRUE	   | 真ならアドレスジャンプ |  0x61 |  args:1, push:0, pop:1  | 
 |  BRANCH_FALSE	  | 偽ならアドレスジャンプ |  0x62 |  args:1, push:0, pop:1  | 
 |  SYSCALL      | 関数呼び出し |  0x70 |  args:1, push:1, pop:?  | 
 |  USRCALL      | 関数呼び出し |  0x71 |  args:1, push:1, pop:?  | 
 |  RET   	   | リターン |  0x72 |  args:0, push:0, pop:0  | 
 |  PRINT   	 | DEBUG用 |  0x80 |  args:0, push:0, pop:1  | 
 |  EXCEPTIONTABLE    | Exception table |  0x85|  args:0, push:0, pop:0  |
 |  THROW |  	  Throw Exception |  0x88| args:0, push:0, pop:0  |
 |  INC_LOCAL  | ローカル変数の値を1増やす |  0x90 |  args:1, push:0, pop:0  | 
 |  DEC_LOCAL  | ローカル変数の値を1減らす |  0x91 |  args:1, push:0, pop:0  | 
 |  DUP  | スタックの先頭要素を複製する |  0x95 |  args:0, push:1, pop:0  | 
 |  _BREAK	   | 内部使用 |  0xF1 |  args:0, push:0, pop:0  | 
 |  _CONTINUE  | 内部使用 |  0xF2 |  args:0, push:0, pop:0  | 
 |  _RETURN  | 内部使用 |  0xF3 |  args:0, push:0, pop:0  | 
 |  ITERATOR  | 反復用 |  0xF4 |args:0, push:0, pop:0  |

# 投入したソース

```
「hello world!」を表示。

```

# コンパイル結果

```

0000:NOP
0001:LD_CONST_STR:hello world!
0002:SYSCALL:表示@NakoPluginConsole.NakoPluginConsole(154)
0003:POP

```

以上。