android的java虚拟机_深入理解Android:Java虚拟机ART

推荐序

前言

第1章 本书必读1

1.1 概述1

1.2 准备环境和工具2

1.2.1 准备源代码2

1.2.2 准备Source Insight2

1.2.3 准备模拟器和自制系统镜像5

1.2.4 小结8

1.3 本书的内容9

1.4 本书资源下载说明12

第2章 深入理解Class文件格式13

2.1 Class文件格式总览13

2.2 常量池及相关内容14

推荐序

前言

第1章 本书必读1

1.1 概述1

1.2 准备环境和工具2

1.2.1 准备源代码2

1.2.2 准备Source Insight2

1.2.3 准备模拟器和自制系统镜像5

1.2.4 小结8

1.3 本书的内容9

1.4 本书资源下载说明12

第2章 深入理解Class文件格式13

2.1 Class文件格式总览13

2.2 常量池及相关内容14

2.2.1 常量项的类型和关系14

2.2.2 信息描述规则18

2.2.3 常量池实例剖析19

2.3 field_info和method_info19

2.4 access_flags介绍21

2.5 属性介绍22

2.5.1 属性概貌22

2.5.2 Code属性23

2.5.3 LineNumberTable属性25

2.5.4 LocalVariableTable属性26

2.6 Java指令码介绍27

2.6.1 指令码和助记符27

2.6.2 如何阅读规范28

2.7 学习路线推荐30

2.8 参考资料30

第3章 深入理解Dex文件格式31

3.1 Dex文件格式总览31

3.1.1 Dex和Class文件格式的区别31

3.1.2 Dex文件格式的概貌35

3.2 认识Dex文件36

3.2.1 header_item36

3.2.2 string_id_item等37

3.2.3 class_def38

3.2.4 code_item40

3.3 Dex指令码介绍41

3.3.1 insns的组织形式41

3.3.2 指令码描述规则42

3.4 学习路线推荐44

3.5 参考资料45

第4章 深入理解ELF文件格式46

4.1 概述46

4.2 ELF文件格式介绍46

4.2.1 ELF文件头结构介绍47

4.2.2 Linking View下的ELF52

4.2.3 Execution View下的ELF61

4.2.4 实例分析:调用动态库中的函数65

4.2.5 ELF总结72

4.3 学习路线推荐73

4.4 参考资料73

第5章 认识C 1174

5.1 数据类型76

5.1.1 基本内置数据类型介绍76

5.1.2 指针、引用和void类型77

5.1.3 字符和字符串81

5.1.4 数组82

5.2 C 源码构成及编译83

5.2.1 头文件示例83

5.2.2 源文件示例85

5.2.3 编译86

5.3 Class介绍88

5.3.1 构造、赋值和析构函数89

5.3.2 类的派生和继承97

5.3.3 友元和类的前向声明103

5.3.4 explicit构造函数105

5.3.5 C 中的struct106

5.4 操作符重载106

5.4.1 操作符重载的实现方式107

5.4.2 输出和输入操作符重载108

5.4.3 ->和*操作符重载110

5.4.4 new和delete操作符重载111

5.4.5 函数调用运算符重载117

5.5 函数模板与类模板118

5.5.1 函数模板119

5.5.2 类模板122

5.6 lambda表达式125

5.7 STL介绍127

5.7.1 string类128

5.7.2 容器类129

5.7.3 算法和函数对象介绍134

5.7.4 智能指针类138

5.7.5 探讨STL的学习140

5.8 其他常用知识141

5.8.1 initializer_list141

5.8.2 带作用域的enum141

5.8.3 constexpr142

5.8.4 static_assert143

5.9 参考资料143

第6章 编译dex字节码为机器码145

6.1 编译器全貌介绍147

6.2 编译器前端介绍150

6.2.1 词法分析和lex151

6.2.2 语法分析和yacc160

6.2.3 语义分析和IR生成介绍171

6.3 优化器介绍175

6.3.1 构造CFG176

6.3.2 分析和处理CFG181

6.3.3 数据流分析与SSA191

6.3.4 IR优化204

6.4 ART中的IR—HInstruction222

6.4.1 ART中的IR222

6.4.2 IR之间的关系225

6.4.3 ART IR对象的初始化231

6.5 寄存器分配233

6.5.1 LSRA介绍235

6.5.2 LSRA相关代码介绍247

6.6 机器码生成相关代码介绍271

6.6.1 GenerateFrameEntry272

6.6.2 VisitAdd和VisitInstance-FieldGet273

6.6.3 GenerateSlowPaths275

6.7 总结277

6.8 参考资料280

第7章 虚拟机的创建283

7.1 概述284

7.1.1 JniInvocation Init函数介绍286

7.1.2 AndroidRuntime startVm函数介绍287

7.2 Runtime Create介绍288

7.2.1 Create函数介绍288

7.2.2 Init函数介绍290

7.3 MemMap与OatFileManager293

7.3.1 MemMap介绍293

7.3.2 OatFileManager介绍298

7.4 FaultManager介绍302

7.4.1 信号处理和SignalAction介绍302

7.4.2 FaultManager介绍307

7.5 Thread介绍311

7.5.1 Startup函数介绍311

7.5.2 Attach函数介绍312

7.6 Heap学习之一325

7.6.1 初识Heap中的关键类326

7.6.2 Heap构造函数第一部分337

7.7 JavaVMExt和JNIEnvExt340

7.7.1 JavaVMExt341

7.7.2 JNIEnvExt343

7.7.3 总结344

7.8 ClassLinker345

7.8.1 关键类介绍345

7.8.2 ClassLinker构造函数352

7.8.3 InitFromBootImage353

7.8.4 ClassLinker总结360

7.9 总结和阅读指导362

第8章 虚拟机的启动363

8.1 Runtime Start364

8.2 初识JNI365

8.2.1 JNI中的数据类型365

8.2.2 ScopedObjectAccess等辅助类367

8.2.3 常用JNI函数介绍369

8.3 Jit LoadCompilerLibrary373

8.4 Runtime InitNativeMethods374

8.4.1 JniConstants Init374

8.4.2 RegisterRuntimeNative Methods375

8.4.3 WellKnownClasses Init和LastInit376

8.5 Thread相关376

8.5.1 Runtime InitThreadGroups377

8.5.2 Thread FinishSetup377

8.5.3 Runtime StartDaemonThreads380

8.6 Runtime CreateSystemClassLoader381

8.7 类的加载、链接和初始化383

8.7.1 关键类介绍383

8.7.2 SetupClass392

8.7.3 LoadClass相关函数393

8.7.4 LinkClass相关函数398

8.7.5 DefineClass414

8.7.6 Verify相关函数416

8.7.7 Initialize相关函数424

8.7.8 ClassLinker中其他常用函数426

8.7.9 ClassLoader介绍437

8.8 虚拟机创建和启动关键内容梳理445

第9章 深入理解dex2oat447

9.1 概述448

9.2 ParseArgs介绍452

9.2.1 CompilerOptions类介绍453

9.2.2 ProcessOptions函数介绍454

9.2.3 InsertCompileOptions函数介绍455

9.3 OpenFile介绍456

9.4 Setup介绍458

9.4.1 Setup代码分析之一458

9.4.2 Setup代码分析之二464

9.4.3 Setup代码分析之三474

9.4.4 Setup代码分析之四484

9.5 CompileImage484

9.5.1 Compile485

9.5.2 ArtCompileDEX496

9.5.3 OptimizingCompiler JniCompile499

9.5.4 OptimizingCompiler Compile527

9.6 OAT和ART文件格式介绍544

9.6.1 OAT文件格式544

9.6.2 ART文件格式550

9.6.3 oatdump介绍554

9.7 总结561

第10章 解释执行和JIT562

10.1 基础知识564

10.1.1 LinkCode564

10.1.2 Runtime ArtMethod566

10.1.3 栈和参数传递572

10.2 解释执行580

10.2.1 art_quick_to_interpreter_bridge580

10.2.2 artQuickToInterpreter-Bridge582

10.2.3 EnterInterpreterFromEntry-Point584

10.2.4 调用栈的管理和遍历593

10.3 ART中的JIT599

10.3.1 Jit、JitCodeCache等600

10.3.2 JIT阈值控制与处理609

10.3.3 OSR的处理612

10.4 HDeoptimize的处理615

10.4.1 VisitDeoptimize相关616

10.4.2 QuickExceptionHandler相关618<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值