`

虚拟机字节码执行过程

阅读更多
先看个例子吧.
方法定义:

```
public int calc(int a, int b, int c){
        return (a+b) * c;
    }
```
javap 查看其字节码

```
public int calc(int, int, int);
    descriptor: (III)I
    flags: ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=4
         0: iload_1
         1: iload_2
         2: iadd
         3: iload_3
         4: imul
         5: ireturn
      LineNumberTable:
        line 6: 0
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0       6     0  this   Lcom/hanlin/fadp/other/Main;
            0       6     1     a   I
            0       6     2     b   I
            0       6     3     c   I
```
从局部变量表 slot1 处载入一个整数 a到操作数栈.
从局部变量表 slot2 处载入一个整数 b到操作数栈.
从操作数栈弹出2个数,执行整数相加,结果压入操作数栈.
从局部变量表 slot3 处在于一个整数 c 到操作数栈.
从操作数栈弹出两个数,执行相乘.
将操作数栈顶的数弹出,然后压入调用者的操作数栈的栈顶.
0
3
分享到:
评论

相关推荐

    Java虚拟机字节码.zip

    Java虚拟机字节码技术是Java编程中的核心概念,它涉及到程序的运行方式以及如何与Java虚拟机(JVM)交互。ASM框架是这个领域的一个关键工具,它提供了一种低级别的字节码操作能力,使得开发者能够进行深度的代码分析...

    探索Java虚拟机的心脏:字节码执行全解析

    #### Java字节码执行过程详解 Java字节码的执行过程是理解Java运行机制的核心。下面我们将详细探讨这一过程。 ##### 编译 Java源代码通过`javac`编译器被编译成字节码(`.class`文件)。编译器将高级语言转换为...

    Java字节码执行的可并行性分析及方法.pdf

    Java字节码执行的可并行性是指Java虚拟机执行Java字节码指令时,可以并行执行的可能性。根据Java虚拟机执行指令的特性,Java字节码指令之间存在依赖关系。通过分析依赖关系图,可以得出Java指令可并行执行的结论。 ...

    JVM 字节码从入门到精通

    Java虚拟机(JVM)是Java程序的运行环境,它负责解释和执行Java字节码文件。字节码文件是用.class扩展名标识的文件,它们是Java源代码经过编译器编译后生成的中间代码形式。这种设计允许Java程序具有跨平台的特性,...

    Java虚拟机解释执行机制研究.pdf

    研究Java虚拟机的解释执行机制,不仅有助于深入理解Java程序的执行过程,也为计算机研究人员和从业者提供了底层技术研究的契机。这有助于他们更好地掌握计算机技术,以及更高效地利用计算机工具进行软件开发。

    dalvik虚拟机运行过程分析

    总的来说,Dalvik虚拟机从启动到执行Java代码,涉及了C++层的JNI接口、类加载、字节码执行、垃圾回收等多个关键环节。理解这些过程有助于深入洞察Android系统的运行机制。随着Android系统的演进,Dalvik虚拟机已被...

    java字节码加密

    在Java中,字节码(Bytecode)是程序经过编译后的中间表示,可以直接由Java虚拟机(JVM)执行。由于字节码是明文的,如果直接暴露,可能会导致知识产权泄露,因此对其进行加密至关重要。 字节码加密通常包括以下几...

    Java 字节码简单说明.zip

    Java字节码是Java编程语言的一个重要特性,它在Java程序执行过程中扮演着核心角色。本文将深入探讨Java字节码的基本概念、作用以及其在Java虚拟机(JVM)中的运行机制。 Java字节码是一种低级的、平台无关的指令集...

    修改class字节码需要的工具.zip

    理解字节码对于直接编辑字节码文件至关重要,因为字节码是Java虚拟机执行的低级语言。通过这个链接,开发者可以查找特定字节码的详细信息,了解其功能和用法。 5. **MadEdit-0.1.2-win32-bin.zip**: MadEdit是一个...

    可信字节码程序虚拟机的构造和验证.pdf

    即使字节码程序通过了验证,如果运行它们的虚拟机存在错误,程序仍可能无法正常执行。这导致了一个矛盾的现象:已验证的程序在不可靠的虚拟机上运行时,其可信度无法得到保障。 ### 构造与验证方案 为了解决上述...

    Java 字节码概述

    Java 编译器不将对变量和方法的引用编译为数值引用,也不确定程序执行过程中的内存布局,而是将这些符号引用信息保留在字节码中,由解释器在运行过程中创立内存布局,然后再通过查表来确定一个方法所在的地址。...

    修改字节码 jclasslib

    在Java编程中,字节码是JVM(Java虚拟机)执行的中间语言,它是由Java编译器将源代码编译成的一种二进制格式。理解并操作字节码对于优化程序性能、调试、逆向工程以及插桩技术等具有重要意义。jclasslib是一款强大的...

    jvm字节码自动加载

    在Java虚拟机(JVM)中,字节码自动加载是一项关键功能,它使得Java程序能够在运行时动态地发现和加载类。字节码是由Java源代码编译而成的二进制格式,它包含了类和接口的信息。了解JVM如何自动加载字节码对于深入...

    java字节码文件查看工具,查看class文件

    “反编译”是将字节码转换回人类可读的源代码的过程。虽然反编译结果可能无法完全复原原始的源代码,但对于理解代码行为和修复问题来说已经足够。JD-GUI就是这样一个工具,它能够帮助开发者反编译class文件,从而在...

    Android Dalvik虚拟机操作码

    在Android应用开发中,所有应用都是用Java或Kotlin等编程语言编写,然后通过编译器转换成Dalvik字节码,也就是Dalvik虚拟机的操作码。这些操作码是Dalvik虚拟机执行应用指令的基础,对于理解和优化Android应用性能至...

    java字节码文件反编译

    在Java中,源代码被编译成字节码,这是一种中间语言,由Java虚拟机(JVM)执行。然而,有时我们需要查看这些字节码以进行调试、逆向工程或学习目的,这时就需要用到字节码反编译工具,如`jd-gui`。 `jd-gui`是一款...

    python字节码详细介绍共2页.pdf.zip

    通过`pdb`模块,开发者可以设置断点,观察字节码执行的每一步,理解程序内部的工作机制。同时,通过分析字节码,开发者可以发现潜在的性能瓶颈,优化代码结构。 总的来说,Python字节码是Python程序执行过程中的...

    simple.vm:解释字节码的简单虚拟机

    "simple.vm"是一个专注于解释执行字节码的简单虚拟机实例。本文将详细探讨其工作原理、结构和相关技术,帮助读者深入了解虚拟机与字节码的关系。 1. 字节码与虚拟机 字节码是中间代码的一种形式,通常由编译器将...

Global site tag (gtag.js) - Google Analytics