end;
%-------------------------------------------------------------%
%файл MainClass.jsm
public class MainClass;
methods;
public <init>():void;
maxstack 1;
maxlocals 1;
aload_0;
invokespecial java.lang.Object::<init>():void;
return;
public static main(java.lang.String[]):void;
maxstack 8;
maxlocals 7;
iconst_3;
anewarray Figure;
astore_1;
aload_1;
iconst_0;
new Circle;
dup;
ldc2_w double 10;
invokespecial Circle::<init>(double):void;
aastore;
iconst_1;
new Rectangle;
dconst_1;
ldc2_w double 2;
invokespecial Rectangle::<init>(double, double):void;
iconst_2;
new Square;
ldc2_w double 3;
invokespecial Square::<init>(double):void;
dconst_0;
dstore_2;
istore 4;
l_50:
iload 4;
arraylength;
if_icmpge l_75;
dload_2;
aaload;
invokeinterface Figure::getArea():double, 1;
dadd;
iinc 4, 1;
goto l_50;
l_75:
new java.io.BufferedReader;
new java.io.InputStreamReader;
getstatic java.lang.System::in:java.io.InputStream;
invokespecial java.io.InputStreamReader::<init>(java.io.InputStream):void;
invokespecial java.io.BufferedReader::<init>(java.io.Reader):void;
astore 4;
aload 4;
invokevirtual java.io.BufferedReader::readLine():java.lang.String;
invokestatic java.lang.Double::parseDouble(java.lang.String):double;
dstore 5;
getstatic java.lang.System::out:java.io.PrintStream;
dload 5;
invokevirtual java.io.PrintStream::println(double):void;
l_114:
goto l_127;
l_117:
ldc string "Error";
invokevirtual java.io.PrintStream::println(java.lang.String):void;
l_127:
protected_blocks;
java.io.IOException l_75 : l_114 > l_117;
Данная программа функционально эквивалентна следующему коду на Java (ассемблерный вариант создан на основе дизассемблированной с помощью утилиты javap Java-программы):
//-----------------------------------------------------------//
public interface Figure {
double getArea();
}
public class Circle implements Figure {
private double m_radius;
public Circle(double radius) {
if(radius<0)
throw new IllegalArgumentException();
m_radius = radius;
public double getArea() {
return m_radius*m_radius*Math.PI;
public class Rectangle implements Figure {
private double m_a;
private double m_b;
public Rectangle(double a, double b) {
if(!((a>=0)&&(b>=0)))
m_a = a;
m_b = b;
return m_a*m_b;
public class Square extends Rectangle {
public Square(double a) {
super(a, a);
import java.io.*;
public class MainClass {
public static void main(String[] args) {
Figure[] figures = new Figure[3];
figures[0] = new Circle(10);
figures[1] = new Rectangle(1, 2);
figures[2] = new Square(3);
double sum = 0;
for(int i = 0; i<figures.length; i++)
sum += figures[i].getArea();
try{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
double d = Double.parseDouble(br.readLine());
System.out.println(d+sum);
} catch(IOException exc) {
System.out.println("Error!");
Страницы: 1, 2, 3, 4, 5