先看个例子吧.
方法定义:
```
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 到操作数栈.
从操作数栈弹出两个数,执行相乘.
将操作数栈顶的数弹出,然后压入调用者的操作数栈的栈顶.
分享到:
相关推荐
Java虚拟机字节码技术是Java编程中的核心概念,它涉及到程序的运行方式以及如何与Java虚拟机(JVM)交互。ASM框架是这个领域的一个关键工具,它提供了一种低级别的字节码操作能力,使得开发者能够进行深度的代码分析...
#### Java字节码执行过程详解 Java字节码的执行过程是理解Java运行机制的核心。下面我们将详细探讨这一过程。 ##### 编译 Java源代码通过`javac`编译器被编译成字节码(`.class`文件)。编译器将高级语言转换为...
Java字节码执行的可并行性是指Java虚拟机执行Java字节码指令时,可以并行执行的可能性。根据Java虚拟机执行指令的特性,Java字节码指令之间存在依赖关系。通过分析依赖关系图,可以得出Java指令可并行执行的结论。 ...
研究Java虚拟机的解释执行机制,不仅有助于深入理解Java程序的执行过程,也为计算机研究人员和从业者提供了底层技术研究的契机。这有助于他们更好地掌握计算机技术,以及更高效地利用计算机工具进行软件开发。
总的来说,Dalvik虚拟机从启动到执行Java代码,涉及了C++层的JNI接口、类加载、字节码执行、垃圾回收等多个关键环节。理解这些过程有助于深入洞察Android系统的运行机制。随着Android系统的演进,Dalvik虚拟机已被...
在Java中,字节码(Bytecode)是程序经过编译后的中间表示,可以直接由Java虚拟机(JVM)执行。由于字节码是明文的,如果直接暴露,可能会导致知识产权泄露,因此对其进行加密至关重要。 字节码加密通常包括以下几...
Java字节码是Java编程语言的一个重要特性,它在Java程序执行过程中扮演着核心角色。本文将深入探讨Java字节码的基本概念、作用以及其在Java虚拟机(JVM)中的运行机制。 Java字节码是一种低级的、平台无关的指令集...
理解字节码对于直接编辑字节码文件至关重要,因为字节码是Java虚拟机执行的低级语言。通过这个链接,开发者可以查找特定字节码的详细信息,了解其功能和用法。 5. **MadEdit-0.1.2-win32-bin.zip**: MadEdit是一个...
Java 编译器不将对变量和方法的引用编译为数值引用,也不确定程序执行过程中的内存布局,而是将这些符号引用信息保留在字节码中,由解释器在运行过程中创立内存布局,然后再通过查表来确定一个方法所在的地址。...
在Java编程中,字节码是JVM(Java虚拟机)执行的中间语言,它是由Java编译器将源代码编译成的一种二进制格式。理解并操作字节码对于优化程序性能、调试、逆向工程以及插桩技术等具有重要意义。jclasslib是一款强大的...
在Java虚拟机(JVM)中,字节码自动加载是一项关键功能,它使得Java程序能够在运行时动态地发现和加载类。字节码是由Java源代码编译而成的二进制格式,它包含了类和接口的信息。了解JVM如何自动加载字节码对于深入...
“反编译”是将字节码转换回人类可读的源代码的过程。虽然反编译结果可能无法完全复原原始的源代码,但对于理解代码行为和修复问题来说已经足够。JD-GUI就是这样一个工具,它能够帮助开发者反编译class文件,从而在...
Java虚拟机(JVM)是Java程序的运行环境,它负责解释和执行Java字节码文件。字节码文件是用.class扩展名标识的文件,它们是Java源代码经过编译器编译后生成的中间代码形式。这种设计允许Java程序具有跨平台的特性,...
在Android应用开发中,所有应用都是用Java或Kotlin等编程语言编写,然后通过编译器转换成Dalvik字节码,也就是Dalvik虚拟机的操作码。这些操作码是Dalvik虚拟机执行应用指令的基础,对于理解和优化Android应用性能至...
在Java中,源代码被编译成字节码,这是一种中间语言,由Java虚拟机(JVM)执行。然而,有时我们需要查看这些字节码以进行调试、逆向工程或学习目的,这时就需要用到字节码反编译工具,如`jd-gui`。 `jd-gui`是一款...
通过`pdb`模块,开发者可以设置断点,观察字节码执行的每一步,理解程序内部的工作机制。同时,通过分析字节码,开发者可以发现潜在的性能瓶颈,优化代码结构。 总的来说,Python字节码是Python程序执行过程中的...
"simple.vm"是一个专注于解释执行字节码的简单虚拟机实例。本文将详细探讨其工作原理、结构和相关技术,帮助读者深入了解虚拟机与字节码的关系。 1. 字节码与虚拟机 字节码是中间代码的一种形式,通常由编译器将...
LuaJIT是一个高效的Lua虚拟机实现,它不仅执行Lua脚本,还能编译Lua代码到机器码,从而显著提升性能。在Mac平台上,如果你需要将Lua脚本转换为32位字节码,Luajit是理想的选择。本文将详细介绍如何在Mac环境下使用...