return;
protected_blocks;
java.lang.Exception
begin_try : End_try> exception;
end;
% повертає суму натуральних чисел від 1 до m_i.
public getSum (): int;
maxstack 3;
maxlocals 2;
iconst_0;
istore_1;
aload_0;% this
getfield @ :: m_i: int;
loop:
dup;
iload_1;% result
iadd;
istore_1;% result
iconst_1;
isub;
dup;
iconst_0;
if_icmpgt loop;
pop;
iload_1;% result
ireturn;
end;
% повертає значення поля m_i
public getI (): int;
maxstack 1;
maxlocals 1;
aload_0;% this
getfield @ :: m_i: int;
ireturn;
end;
2.
% файл Switches.jsm
public class Switches;
fields;
methods;
% обидва методу функціонально еквівалентні наступної функції, написаної на Java.
% static int function (int i) {
% switch (i) {p>% case 1: return 2;
% case 2: return -1;
% default: return 0;
%}
%}
public static lookup (int): int;
maxstack 1;
maxlocals 1;
iload_0;
lookupswitch
default : L_def
1: l_1
2: l_2;
l_def:
iconst_0;
ireturn;
l_1:
iconst_2;
ireturn;
l_2:
iconst_m1;
ireturn;
end;
В
public static table (int): int;
maxstack 1;
maxlocals 1;
iload_0;
tableswitch 1:2
default : L_def
1: l_1
2: l_2;
l_def:
iconst_0;
ireturn;
l_1:
iconst_2;
ireturn;
l_2:
iconst_m1;
ireturn;
end;
3.
Наступний приклад являє собою програму, що складається з 5 класів.
% ---------------------------------------------- ---------------%
% файл Figure.jsm
public interface Figure;
methods;
public abstract getArea (): double;
% ---------------------------------------------- ---------------%
% ---------------------------------------------- ---------------%
% файл Circle.jsm
public class Circle;
implements Figure;
fields;
private m_radius: double;
methods;
public (double): void;
maxstack 4;
maxlocals 3;
aload_0;
invokespecial java.lang.Object :: (): void;
dload_1;
dconst_0;
dcmpg;
ifge l_endif;
new java.lang.IllegalArgumentException;
dup;
invokespecial java.lang.IllegalArgumentException :: (): void;
athrow;
l_endif:
aload_0;
dload_1;
putfield @ :: M_radius: double;
return;
end;
public getArea (): double;
maxstack 4;
maxlocals 1;
aload_0;
getfield @ :: M_radius: double;
aload_0;
getfield @ :: M_radius: double;
dmul;
ldc2_w double 3.14159265;
dmul;
dreturn;
end;
% ---------------------------------------------- ---------------%
% ---------------------------------------------- ---------------%
% файл Rectangle.jsm
public class Rectangle;
implements Figure;
fields;
private m_a: double;
private m_b: double;
methods;
public (double, double): void;
maxstack 4;
maxlocals 5;
aload_0;
invokespecial java.lang.Object :: (): void;
dload_1;
dconst_0;
dcmpl;
iflt l_error;
dload_3;
dconst_0;
dcmpl;
ifge l_endif;
l_error:
new java.lang.IllegalArgumentException;
dup;
invokespecial java.lang.IllegalArgumentException :: (): void;
athrow;
l_endif:
aload_0;
dload_1;
putfield @ :: M_a: double;
aload_0;
dload_3;
putfield @ :: M_b: double;
return;
end;
public getArea (): double;
maxstack 4;
maxlocals 1;
aload_0;
getfield @ :: M_a: double;
aload_0;
getfield @ :: M_b: double;
dmul;
dreturn;
end;
% ---------------------------------------------- ---------------%
% ---------------------------------------------- ---------------%
% файл Square.jsm
public class Square;
extends Rectangle;
methods;
public (double): void; ...