标签:大端 jvm lin mina instead length point type_info led
CONSTANT_Utf8_info
Structure The CONSTANT_Utf8_info
structure is used to represent constant string values:
代表常量字符串。
The items of the CONSTANT_Utf8_info
structure are as follows:
条目如下:
The tag
item of the CONSTANT_Utf8_info
structure has the value CONSTANT_Utf8
(1).
tag值为CONSTANT_Utf8
The value of the length
item gives the number of bytes in the bytes
array (not the length of the resulting string).
bytes数组的长度
The bytes
array contains the bytes of the string.
No byte may have the value (byte)0
.
No byte may lie in the range (byte)0xf0
to (byte)0xff
.
该数组包含字符串的字节。
不能包含0.
不能在0xf0
到 (byte)0xff
.范围内
String content is encoded in modified UTF-8. Modified UTF-8 strings are encoded so that code point sequences that contain only non-null ASCII characters can be represented using only 1 byte per code point, but all code points in the Unicode codespace can be represented. Modified UTF-8 strings are not null-terminated. The encoding is as follows:
翻译:字符串内容以修改后的UTF-8编码。修改版UTF-8编码后,仅包含非空ASCII字符的码点序列能够用(每个码点一个1字节)来标识,但是所有的Unicode代码段中的码点能够被标识。
\u0001
‘ to ‘\u007F
‘ are represented by a single byte:
The 7 bits of data in the byte give the value of the code point represented.
翻译:‘\u0001
‘ to ‘\u007F
‘ 用单字节标识
\u0000
‘) and code points in the range ‘\u0080
‘ to ‘\u07FF
‘ are represented by a pair of bytes x
and y
:The two bytes represent the code point with the value:
翻译:空码点(‘\u0000
‘) 和 ‘\u0080
‘ to ‘\u07FF
‘ 范围内的可以用x和y来标识,然后通过上面的公式代入x和y的值来算出码点。(类似于2字节编码的那部分UTF-8)
Code points in the range ‘\u0800
‘ to ‘\uFFFF
‘ are represented by 3 bytes x
, y
, and z
:
翻译: ‘\u0800
‘ to ‘\uFFFF
‘ 用三字节编码,用x、y、z三字节来编码。
u
, v
, w
, x
, y
, and z
:
The bytes of multibyte characters are stored in the class
file in big-endian (high byte first) order.
There are two differences between this format and the "standard" UTF-8 format. First, the null character (char)0
is encoded using the 2-byte format rather than the 1-byte format, so that modified UTF-8 strings never have embedded nulls. Second, only the 1-byte, 2-byte, and 3-byte formats of standard UTF-8 are used. The Java Virtual Machine does not recognize the four-byte format of standard UTF-8; it uses its own two-times-three-byte format instead.
For more information regarding the standard UTF-8 format, see Section 3.9 Unicode Encoding Forms of The Unicode Standard, Version 6.0.0.
翻译:6字节编码?多字符的字节存储在class文件中,大端序。
该编码和标准utf-8有两个差别。第一,空字符0用了2字节编码而不是1字节,因此修改后的UTF8字符串没有null值。第二,标准utf8中1,2,3字节格式的编码被支持。java虚拟机不识别4字节的编码;因此使用了6字节格式代替。
CONSTANT_MethodHandle_info
Structure
The CONSTANT_MethodHandle_info
structure is used to represent a method handle:
The items of the CONSTANT_MethodHandle_info
structure are the following:
The tag
item of the CONSTANT_MethodHandle_info
structure has the value CONSTANT_MethodHandle
(15).
值为CONSTANT_MethodHandle
The value of the reference_kind
item must be in the range 1 to 9. The value denotes the kind of this method handle, which characterizes its bytecode behavior (§5.4.3.5).
值必须为1-9.它的值标识了这个方法处理的类型?
The value of the reference_index
item must be a valid index into the constant_pool
table. Theconstant_pool
entry at that index must be as follows:
If the value of the reference_kind
item is 1 (REF_getField
), 2 (REF_getStatic
), 3 (REF_putField
), or 4 (REF_putStatic
), then the constant_pool
entry at that index must be aCONSTANT_Fieldref_info
(§4.4.2) structure representing a field for which a method handle is to be created.
If the value of the reference_kind
item is 5 (REF_invokeVirtual
) or 8 (REF_newInvokeSpecial
), then the constant_pool
entry at that index must be a CONSTANT_Methodref_info
structure (§4.4.2) representing a class‘s method or constructor (§2.9) for which a method handle is to be created.
If the value of the reference_kind
item is 6 (REF_invokeStatic
) or 7 (REF_invokeSpecial
), then if the class
file version number is less than 52.0, the constant_pool
entry at that index must be aCONSTANT_Methodref_info
structure representing a class‘s method for which a method handle is to be created; if the class
file version number is 52.0 or above, the constant_pool
entry at that index must be either a CONSTANT_Methodref_info
structure or aCONSTANT_InterfaceMethodref_info
structure (§4.4.2) representing a class‘s or interface‘s method for which a method handle is to be created.
If the value of the reference_kind
item is 9 (REF_invokeInterface
), then the constant_pool
entry at that index must be a CONSTANT_InterfaceMethodref_info
structure representing an interface‘s method for which a method handle is to be created.
If the value of the reference_kind
item is 5 (REF_invokeVirtual
), 6 (REF_invokeStatic
), 7 (REF_invokeSpecial
), or 9 (REF_invokeInterface
), the name of the method represented by a CONSTANT_Methodref_info
structure or a CONSTANT_InterfaceMethodref_info
structure must not be <init>
or <clinit>
.
If the value is 8 (REF_newInvokeSpecial
), the name of the method represented by a CONSTANT_Methodref_info
structure must be <init>
.
翻译:reference_index
值必须是有效索引。指向的值可以是如下:
如果reference_kind
是1(REF_getField), 2 (REF_getStatic
), 3 (REF_putField
), or 4 (REF_putStatic
), 那么值必须为CONSTANT_Fieldref_info,代表一个将要为方法handle创建的域
如果 reference_kind
item是 5 (REF_invokeVirtual
) 或者8 (REF_newInvokeSpecial
),那么值为CONSTANT_Methodref_info
,代表一个类的方法或者构造函数
如果 reference_kind
item 是6 (REF_invokeStatic
) 或者7 (REF_invokeSpecial
), 那么class文件的版本号小于52.0,值为CONSTANT_Methodref_info
,代表一个类的方法;如果版本号大于52,那么要么是一个CONSTANT_Methodref_info
,要么 是aCONSTANT_InterfaceMethodref_info
,代表一个类或者接口的方法。
如果 reference_kind
item 是9 (REF_invokeInterface
),那么值须为CONSTANT_InterfaceMethodref_info
,标识一个接口的方法。
CONSTANT_MethodType_info
StructureThe CONSTANT_MethodType_info
structure is used to represent a method type:
代表一个方法类型
The items of the CONSTANT_MethodType_info
structure are as follows:
The tag
item of the CONSTANT_MethodType_info
structure has the value CONSTANT_MethodType
(16).
The value of the descriptor_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
structure (§4.4.7) representing a method descriptor (§4.3.3).
翻译:值须指向CONSTANT_Utf8_info,标识一个方法描述符
CONSTANT_InvokeDynamic_info
Structure The CONSTANT_InvokeDynamic_info
structure is used by an invokedynamic instruction (§invokedynamic) to specify a bootstrap method, the dynamic invocation name, the argument and return types of the call, and optionally, a sequence of additional constants called static arguments to the bootstrap method.
翻译:被invokedynamic 使用,指定一个启动方法,或者动态调用名,参数和返回类型,静态参数(可选)
The items of the CONSTANT_InvokeDynamic_info
structure are as follows:
The tag
item of the CONSTANT_InvokeDynamic_info
structure has the value CONSTANT_InvokeDynamic
(18).
The value of the bootstrap_method_attr_index
item must be a valid index into the bootstrap_methods
array of the bootstrap method table (§4.7.23) of this class
file.
须为本class文件中启动方法表的bootstrap_methods数组
中有效索引
The value of the name_and_type_index
item must be a valid index into the constant_pool
table. Theconstant_pool
entry at that index must be a CONSTANT_NameAndType_info
structure (§4.4.6) representing a method name and method descriptor (§4.3.3).
必须为CONSTANT_NameAndType_info
类型,代表一个方法名和方法描述符
标签:大端 jvm lin mina instead length point type_info led
原文地址:http://www.cnblogs.com/grey-wolf/p/7459383.html