33個とったよ

とるかとられるか、そういう世界。青で括ってあるのがコンスタントテーブルのタグで、これがせめて33個本当にあるかどうか数えてくれ。
01は文字UTF8テーブルで、私が書いたABCDEFGとか、はたまたクラス名とか、メソッド名などが列挙されている。JAVAは外部の命令をクラスローダーが読み込んで実行される、ローダーが命令を読み込むときに名前(シンボル)が必要になる、男のシンボルはシンボルロックだが、JAVAのシンボルはこのUTF8で書き込まれた文字列だ。なんと豊穣で、優雅な言語だJAVAは。JAVAの優雅さの一端を垣間見た気になり岡は部屋で一人なみだするのであつたとよ。
とりあえずこれを表におこしてみた
|
No |
tag |
|
|
|
1 |
0A |
|
|
|
2 |
09 |
|
|
|
3 |
08 |
|
|
|
4 |
0A |
|
|
|
5 |
07 |
|
|
|
6 |
07 |
|
|
|
7 |
01 |
|
<init> |
|
8 |
01 |
|
()V |
|
9 |
01 |
|
Code |
|
10 |
01 |
|
LineNumberTable |
|
11 |
01 |
|
LocalVariableTable |
|
12 |
01 |
|
This |
|
13 |
01 |
|
Ltest/test; |
|
14 |
01 |
|
|
|
15 |
01 |
|
([Ljava/lang/String;)V |
|
16 |
01 |
|
Args |
|
17 |
01 |
|
[Ljava/lang/String; |
|
18 |
01 |
|
SourceFile |
|
19 |
0C |
|
|
|
20 |
07 |
|
|
|
21 |
0C |
|
|
|
22 |
01 |
|
test.java |
|
23 |
07 |
|
|
|
24 |
0C |
|
|
|
25 |
01 |
|
ABCDEFG |
|
26 |
01 |
|
test/test |
|
27 |
01 |
|
java/lang/Object |
|
28 |
01 |
|
java/lang/System |
|
29 |
01 |
|
Out |
|
30 |
01 |
|
Ljava/io/PrintStream; |
|
31 |
01 |
|
java/io/PrintStream |
|
32 |
01 |
|
Println |
|
33 |
01 |
|
(Ljava/lang/String;)V |
01=UTF8以外のタグで07(4つ)・08(1つ)・09(1つ)・0A(二つ).0C(二つ)があるのが分かる。
|
Constant Type |
Value |
|
8 |
|
|
12 |
|
|
|
|
お洒落な画像が今回無いので、ここで小休止でイラストコーナーとする

ジュード・ロウ
とりあえず07からいってみよう
CONSTANT_Class_info { u1 tag; u2 name_index; }Tagはいいとしてこのname_indexは何か
今となっては中井美紀ほどの語学力を得た俺は、さらに説明を読むことにした。
とモノローグしたところで、タイトルロール・・・
「えんでー」
エンエンエーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーん(キャシャーーーーンのように)
ポリマー(真)
name_index
The value of the name_index item must be a valid index into the constant_pool table. The constant_pool entry at that index must be a CONSTANT_Utf8_info (§4.4.7)
structure representing a valid fully qualified class or interface name (§2.8.1)
encoded in internal form (§4.2).
たぶんこのインデックスは上から何番目かということだと思われる。
他の構造も見てみた
09
CONSTANT_Fieldref_info { u1 tag; u2 class_index; u2 name_and_type_index; }
0A
CONSTANT_Methodref_info{
u1 tag; u2 class_index; u2 name_and_type_index; }
0C
CONSTANT_NameAndType_info { u1 tag; u2 name_index; u2 descriptor_index; }
08
CONSTANT_String_info { u1 tag; u2 string_index; }番号をひっぱってきてみた
|
No |
tag |
Index |
|
|
|
1 |
0A |
0006 |
0014 |
|
|
2 |
09 |
0015 |
0016 |
|
|
3 |
08 |
0017 |
|
|
|
4 |
0A |
0018 |
0019 |
|
|
5 |
07 |
001A |
|
|
|
6 |
07 |
001B |
|
|
|
7 |
01 |
|
|
<init> |
|
8 |
01 |
|
|
()V |