Dalvik指令集
.class public LCalculate;#定义类名.super Ljava/lang/Object;#定义父类
.method public static main([Ljava/lang/String;)V#申明静态main()方法,L表示这是一个类.registers 5 #方法中使用5个寄存器.prologue #代码起始指令nop #空指令nopnopnopnew-instance v0, LCalculate; #构造一个Calculate实例invoke-direct{v0},LCalculate;-><init>()V #调用构造函数sget-object v1,Ljava/lang/System;->out:Ljava/io/PrintStream; #静态字段操作指令const/4 v2,0x5 #将5存入寄存器V2const/4 v3,0x3 #将3存入寄存器V3invoke-virtual{v0,v2,v3},LCalculate;->foo(II)I #调用LCalculate实例foo虚函数(V0为隐式的LCalculate对象引用,后面二个是参数)move-result v0 #获取foo函数执行后返回的结果invoke-virtual{v1,v0},Ljava/io/PrintStream;->println(I)V #方法调用指令return-void #函数从一个void方法返回.end method #方法结束符号 # direct methods #表示这是一个直接方法.method public constructor <init>()V #构造函数 .registers 1 #一个寄存器 .prologue #代码起始指令 invoke-direct {p0}, Ljava/lang/Object;-><init>()V #调用实例的直接方法 return-void #函数从一个void方法返回.end method #方法结束符号
# virtual methods #表示这是一个虚方法.method public foo(II)I #方法名为foo,二个参数且都是int类型,并且返回值为int.registers 5 #方法中使用5个寄存器.prologue #代码起始指令add-int v0,p1,p2 #p1,p2两个int类型相加,结果保存在V0sub-int v1,p1,p2#p1,p2两个int类型相减,结果保存在V1
mul-int/2addr v0,v1 #v0,v1两个寄存器进行乘法运算,结果存储在v0寄存器
return v0 #返回寄存器V0的值.end method #方法结束符号 java源码:public class Calculate
{ public int foo(int a,int b){ return (a+b)*(a-b);}public static void main(String[] argc) { Calculate cal=new Calculate();System.out.println(cal.foo(5,3));}}