基本信息
源码名称:JVM白皮书.pdf
源码大小:1.96M
文件格式:.pdf
开发语言:Java
更新时间:2020-06-13
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍
JVM白皮书

Table of Contents
1 Introduction 1
1.1 A Bit of History 1
1.2 The Java Virtual Machine 2
1.3 Organization of the Specification 3
1.4 Notation 4
1.5 Feedback 4
2 The Structure of the Java Virtual Machine 5
2.1 The class File Format 5
2.2 Data Types 6
2.3 Primitive Types and Values 6
2.3.1 Integral Types and Values 7
2.3.2 Floating-Point Types, Value Sets, and Values 8
2.3.3 The returnAddress Type and Values 10
2.3.4 The boolean Type 10
2.4 Reference Types and Values 11
2.5 Run-Time Data Areas 11
2.5.1 The pc Register 12
2.5.2 Java Virtual Machine Stacks 12
2.5.3 Heap 13
2.5.4 Method Area 13
2.5.5 Run-Time Constant Pool 14
2.5.6 Native Method Stacks 14
2.6 Frames 15
2.6.1 Local Variables 16
2.6.2 Operand Stacks 17
2.6.3 Dynamic Linking 18
2.6.4 Normal Method Invocation Completion 18
2.6.5 Abrupt Method Invocation Completion 18
2.7 Representation of Objects 19
2.8 Floating-Point Arithmetic 19
2.8.1 Java Virtual Machine Floating-Point Arithmetic and IEEE
754 19
2.8.2 Floating-Point Modes 20
2.8.3 Value Set Conversion 20
2.9 Special Methods 22
2.9.1 Instance Initialization Methods 22
2.9.2 Class Initialization Methods 22
2.9.3 Signature Polymorphic Methods 23
2.10 Exceptions 23
The Java® Virtual Machine Specification
iv
2.11 Instruction Set Summary 26
2.11.1 Types and the Java Virtual Machine 26
2.11.2 Load and Store Instructions 29
2.11.3 Arithmetic Instructions 30
2.11.4 Type Conversion Instructions 32
2.11.5 Object Creation and Manipulation 34
2.11.6 Operand Stack Management Instructions 34
2.11.7 Control Transfer Instructions 34
2.11.8 Method Invocation and Return Instructions 35
2.11.9 Throwing Exceptions 36
2.11.10 Synchronization 36
2.12 Class Libraries 37
2.13 Public Design, Private Implementation 37
3 Compiling for the Java Virtual Machine 39
3.1 Format of Examples 39
3.2 Use of Constants, Local Variables, and Control Constructs 40
3.3 Arithmetic 45
3.4 Accessing the Run-Time Constant Pool 46
3.5 More Control Examples 47
3.6 Receiving Arguments 50
3.7 Invoking Methods 51
3.8 Working with Class Instances 53
3.9 Arrays 55
3.10 Compiling Switches 57
3.11 Operations on the Operand Stack 59
3.12 Throwing and Handling Exceptions 59
3.13 Compiling finally 63
3.14 Synchronization 66
3.15 Annotations 67
3.16 Modules 68
4 The class File Format 71
4.1 The ClassFile Structure 72
4.2 Names 77
4.2.1 Binary Class and Interface Names 77
4.2.2 Unqualified Names 78
4.2.3 Module and Package Names 78
4.3 Descriptors 79
4.3.1 Grammar Notation 79
4.3.2 Field Descriptors 79
4.3.3 Method Descriptors 81
4.4 The Constant Pool 82
4.4.1 The CONSTANT_Class_info Structure 85
4.4.2 The CONSTANT_Fieldref_info, CONSTANT_Methodref_info, and
CONSTANT_InterfaceMethodref_info Structures 86
4.4.3 The CONSTANT_String_info Structure 87
The Java® Virtual Machine Specification
v
4.4.4 The CONSTANT_Integer_info and CONSTANT_Float_info
Structures 87
4.4.5 The CONSTANT_Long_info and CONSTANT_Double_info
Structures 89
4.4.6 The CONSTANT_NameAndType_info Structure 90
4.4.7 The CONSTANT_Utf8_info Structure 91
4.4.8 The CONSTANT_MethodHandle_info Structure 93
4.4.9 The CONSTANT_MethodType_info Structure 95
4.4.10 The CONSTANT_Dynamic_info and
CONSTANT_InvokeDynamic_info Structures 95
4.4.11 The CONSTANT_Module_info Structure 96
4.4.12 The CONSTANT_Package_info Structure 97
4.5 Fields 98
4.6 Methods 100
4.7 Attributes 103
4.7.1 Defining and Naming New Attributes 110
4.7.2 The ConstantValue Attribute 110
4.7.3 The Code Attribute 111
4.7.4 The StackMapTable Attribute 115
4.7.5 The Exceptions Attribute 122
4.7.6 The InnerClasses Attribute 123
4.7.7 The EnclosingMethod Attribute 126
4.7.8 The Synthetic Attribute 127
4.7.9 The Signature Attribute 128
4.7.9.1 Signatures 129
4.7.10 The SourceFile Attribute 133
4.7.11 The SourceDebugExtension Attribute 133
4.7.12 The LineNumberTable Attribute 134
4.7.13 The LocalVariableTable Attribute 135
4.7.14 The LocalVariableTypeTable Attribute 137
4.7.15 The Deprecated Attribute 139
4.7.16 The RuntimeVisibleAnnotations Attribute 140
4.7.16.1 The element_value structure 142
4.7.17 The RuntimeInvisibleAnnotations Attribute 145
4.7.18 The RuntimeVisibleParameterAnnotations Attribute 146
4.7.19 The RuntimeInvisibleParameterAnnotations Attribute 147
4.7.20 The RuntimeVisibleTypeAnnotations Attribute 149
4.7.20.1 The target_info union 155
4.7.20.2 The type_path structure 159
4.7.21 The RuntimeInvisibleTypeAnnotations Attribute 163
4.7.22 The AnnotationDefault Attribute 164
4.7.23 The BootstrapMethods Attribute 165
4.7.24 The MethodParameters Attribute 167
4.7.25 The Module Attribute 169
4.7.26 The ModulePackages Attribute 176
4.7.27 The ModuleMainClass Attribute 177
4.7.28 The NestHost Attribute 178
4.7.29 The NestMembers Attribute 178
The Java® Virtual Machine Specification
vi
4.8 Format Checking 180
4.9 Constraints on Java Virtual Machine Code 180
4.9.1 Static Constraints 181
4.9.2 Structural Constraints 184
4.10 Verification of class Files 188
4.10.1 Verification by Type Checking 189
4.10.1.1 Accessors for Java Virtual Machine Artifacts 192
4.10.1.2 Verification Type System 196
4.10.1.3 Instruction Representation 200
4.10.1.4 Stack Map Frames and Type Transitions 202
4.10.1.5 Type Checking Abstract and Native Methods 207
4.10.1.6 Type Checking Methods with Code 210
4.10.1.7 Type Checking Load and Store Instructions 219
4.10.1.8 Type Checking for protected Members 221
4.10.1.9 Type Checking Instructions 224
4.10.2 Verification by Type Inference 343
4.10.2.1 The Process of Verification by Type Inference 343
4.10.2.2 The Bytecode Verifier 343
4.10.2.3 Values of Types long and double 347
4.10.2.4 Instance Initialization Methods and Newly Created
Objects 347
4.10.2.5 Exceptions and finally 349
4.11 Limitations of the Java Virtual Machine 351
5 Loading, Linking, and Initializing 353
5.1 The Run-Time Constant Pool 353
5.2 Java Virtual Machine Startup 356
5.3 Creation and Loading 357
5.3.1 Loading Using the Bootstrap Class Loader 359
5.3.2 Loading Using a User-defined Class Loader 359
5.3.3 Creating Array Classes 360
5.3.4 Loading Constraints 361
5.3.5 Deriving a Class from a class File Representation 362
5.3.6 Modules and Layers 364
5.4 Linking 366
5.4.1 Verification 367
5.4.2 Preparation 367
5.4.3 Resolution 368
5.4.3.1 Class and Interface Resolution 370
5.4.3.2 Field Resolution 371
5.4.3.3 Method Resolution 372
5.4.3.4 Interface Method Resolution 374
5.4.3.5 Method Type and Method Handle Resolution 375
5.4.3.6 Dynamically-Computed Constant and Call Site
Resolution 379
5.4.4 Access Control 384
5.4.5 Method Overriding 386
The Java® Virtual Machine Specification
vii
5.4.6 Method Selection 387
5.5 Initialization 387
5.6 Binding Native Method Implementations 390
5.7 Java Virtual Machine Exit 391
6 The Java Virtual Machine Instruction Set 393
6.1 Assumptions: The Meaning of "Must" 393
6.2 Reserved Opcodes 394
6.3 Virtual Machine Errors 394
6.4 Format of Instruction Descriptions 395
mnemonic 396
6.5 Instructions 398
aaload 399
aastore 400
aconst_null 402
aload 403
aload_<n> 404
anewarray 405
areturn 406
arraylength 407
astore 408
astore_<n> 409
athrow 410
baload 412
bastore 413
bipush 414
caload 415
castore 416
checkcast 417
d2f 419
d2i 420
d2l 421
dadd 422
daload 424
dastore 425
dcmp<op> 426
dconst_<d> 428
ddiv 429
dload 431
dload_<n> 432
dmul 433
dneg 435
drem 436
dreturn 438
dstore 439
dstore_<n> 440
dsub 441
The Java® Virtual Machine Specification
viii
dup 442
dup_x1 443
dup_x2 444
dup2 445
dup2_x1 446
dup2_x2 447
f2d 449
f2i 450
f2l 451
fadd 452
faload 454
fastore 455
fcmp<op> 456
fconst_<f> 458
fdiv 459
fload 461
fload_<n> 462
fmul 463
fneg 465
frem 466
freturn 468
fstore 469
fstore_<n> 470
fsub 471
getfield 472
getstatic 473
goto 475
goto_w 476
i2b 477
i2c 478
i2d 479
i2f 480
i2l 481
i2s 482
iadd 483
iaload 484
iand 485
iastore 486
iconst_<i> 487
idiv 488
if_acmp<cond> 489
if_icmp<cond> 490
if<cond> 492
ifnonnull 494
ifnull 495
iinc 496
iload 497
iload_<n> 498
The Java® Virtual Machine Specification
ix
imul 499
ineg 500
instanceof 501
invokedynamic 503
invokeinterface 505
invokespecial 509
invokestatic 513
invokevirtual 516
ior 523
irem 524
ireturn 525
ishl 527
ishr 528
istore 529
istore_<n> 530
isub 531
iushr 532
ixor 533
jsr 534
jsr_w 535
l2d 536
l2f 537
l2i 538
ladd 539
laload 540
land 541
lastore 542
lcmp 543
lconst_<l> 544
ldc 545
ldc_w 547
ldc2_w 549
ldiv 551
lload 552
lload_<n> 553
lmul 554
lneg 555
lookupswitch 556
lor 558
lrem 559
lreturn 560
lshl 561
lshr 562
lstore 563
lstore_<n> 564
lsub 565
lushr 566
lxor 567
The Java® Virtual Machine Specification
x
monitorenter 568
monitorexit 570
multianewarray 572
new 574
newarray 576
nop 578
pop 579
pop2 580
putfield 581
putstatic 583
ret 585
return 586
saload 587
sastore 588
sipush 589
swap 590
tableswitch 591
wide 593
7 Opcode Mnemonics by Opcode 595
A Limited License Grant 599