$B%j%K%"$J%a%b%j%l%$%"%&%H$NB?<!85G[Ns(B

- $BL\E*(B
  - JIT $B$K$h$k(B sematic expansion $B$G$I$3$^$G$G$-$k$+!#(B

- todo
  - $B%a%b%j%l%$%"%&%H$r7h$a$k!#(B
    $B<!85$4$H$NG[NsD9$N3JG<>l=j$J$I!#(B

- $BBP=h$,MW$k=hM}(B
  - $BG[Ns$N:n@.(B
    - multianewarray
    - newarray, anewarray $B$NAH$_9g$o$;$K$h$k:n@.$OL5;k!)(B
    - $B<!85$4$H$NG[NsD9$r$I$&J];}$9$k$+!)(B
  - $BG[Ns%"%/%;%9(B
    - aload i, (push index, aaload) x n$B2s(B,
        read :  [ilfdabcs]aload
        write:  $B2?$+$r(B push($BNc(B: bipush), [ilfdabcs]astore
  - $BG[NsD9$N<hF@(B (arraylength)
    1$B<!85L\$ND9$5$rJV$9$h$&$K$9$k!#(B
  - GC

- $B%G!<%?%U%m!<2r@O(B
  - $B%m!<%+%kJQ?t$N7?$rCN$k$?$a$K$O!"%G!<%?%U%m!<2r@O$,MW$k!D(B
  - $B$"$k;~E@$G%9%m%C%H(B n $BHV$K2?$,F~$C$F$$$k$+!#(B
    LocalVariableTable $B$r@8@.$9$k$+!#(B
  - $B$I$&$;$J$i%G!<%?0MB82r@O$^$G$7$?$$!D$-$j$,$J$$!#(B

- $BLdBj(B
  - sub-array $B$X$N%"%/%;%9(B
    - $B$"$-$i$a$k!)(B
    - $BI,MW$K1~$8$FG[Ns%*%V%8%'%/%H$r:n$k!#(B
      $B$"$k%a%b%jNN0h$,J#?t%*%V%8%'%/%H$+$i;2>H$5$l$k!#(Balias$B!#(B
        GC $B$,BP1~$9$kI,MW$"$j!#(B


[$B;qNA(B]

- $B%*%V%8%'%/%H$r(B push $B$9$kL?Na(B
  - $B%U%#!<%k%I$+$i(B
    getfield $BEy(B: getfield, getfield_quick, getfield2_quick, getfield_quick_w
  - $B%m!<%+%kJQ?t$+$i(B
    aload $BEy(B: aload, aload_[0-3]
    - LocalVariableTable attribute $B$,$J$$8B$j!"(B
      $B%3%s%Q%$%k;~$K7?>pJs$rF@$i$l$J$$!#(B-> $B%G!<%?%U%m!<2r@O$,MW$k!#(B
(
  - $B%3%s%9%?%s%H%W!<%k$+$i!"$OM-$jF@$J$$!#(B
    ldc $BEy(B: ldc, ldc_w (ldc2_w $B$O(B long, double $B7?@lMQ(B)
    $B%3%s%9%?%s%H%W!<%k$KF~$jF@$k%*%V%8%'%/%H$O(B String $B7?$N$_!#(B
)


- Java $B%3%s%Q%$%i$,@8@.$9$k%P%$%H%3!<%INs(B

  - $B@8@.(B:	new int[d0][d1]...[dn-1]

    push (iconst_* or bipush or sipush or ldc) d0
    ... d1
    ...
    ... dn-1
    multianewarray $B%/%i%9(B(2byte) $B<!85?t(B(1byte)

  - write:	array[d0][d1]...[dn-1] = v

    push array
    push d0
    aaload
    ...
    push dn-2
    aaload
    push dn-1
    ---------- $B0J>e$O(B write, read $B$G6&DL(B
    push v
    ?astore

  - read:	array[d0][d1]...[dn-1]

    push d0
    aaload
    push d1
    aaload
    ...
    push dn-2
    aaload
    push dn-1
    ---------- $B0J>e$O(B write, read $B$G6&DL(B
    ?aload


- $B6qBNE*$J%P%$%H%3!<%I(B

  - $B@8@.(B
    int[][][][][] ary0 = new int[32768][32767][127][5][-1];

   0 ldc #1 <Integer 32768>
   2 sipush 32767
   5 bipush 127
   7 iconst_5
   8 iconst_m1
   9 multianewarray #5 dim #5 <Class [[[[[I>
  13 astore_1

  - write
    ary[i+2][i*3] = i/4;
    --- - -		aload_2, iload_1, iconst_2
        ---		iadd
    -------		aaload
             - -	iload_1, iconst_3
             ---	imul
                    - -	iload_1, iconst_4
                    ---	imul
    -------------------	iastore

   7 aload_2

   8 iload_1
   9 iconst_2
  10 iadd

  11 aaload

  12 iload_1
  13 iconst_3
  14 imul

  15 iload_1
  16 iconst_4
  17 idiv

  18 iastore

  - read
    ary[3][4][5]
    ---			aload_1
        -		iconst_3
    -----		aaload
           -		iconst_4
    --------		aaload
              -		iconst_5
    -----------		iaload

  20 aload_1

  21 iconst_3
  22 aaload

  23 iconst_4
  24 aaload

  25 iconst_5
  26 iaload


- $BDj?t$N(B push
  iconst_*:	-1 $B!A(B 5
  bipush:	signed 8 bit
  sipush:	signed 16 bit
  ldc:		$B@dBPCM$,$=$l0J>e(B
