Jasmin не JVM, это байт-код Java а> ассемблер.
Поскольку он развернут как JAR, вам нужен JRE1, чтобы использовать его, однако установив весь JDK2 может быть лучшим выбором, поскольку вы все равно собираетесь разрабатывать с помощью Java.
Чтобы запустить его, предполагая, что java
находится в вашей переменной окружения PATH, вы можете:
Перейдите в каталог, где находится jasmin.jar
, и запустите
java -jar jasmin.jar <input>
Измените переменную среды CLASSPATH, включив в нее имя файла jasmin.jar
, а затем выполните указанную выше команду в любом месте.
Чтобы полностью понять директивы Jasmin, вам лучше прочитать что-нибудь о формат файла класса Java3, особенно в отношении различных разделов: заголовка, пулов констант, атрибутов, методов4, полей.
Наконец вам необходимо изучить инструкции по байтовому коду.
Обратите внимание, что Jasmin не является простым низкоуровневым ассемблером.
Например, он полностью абстрагирует пул констант от таких инструкций, как getXXX
и invokeXXX
.
Кроме того, некоторые инструкции имеют разные имена (например, invokenonvirtual
‹-> invokespecial
), полный список см. здесь.
Наконец, необходимы глубокие знания формата файлов JLS и CLASS. , в частности, о том, как реализованы дженерики и внутренние классы.
Простой helloworld.j
.bytecode 51.0 ;Java 7
.class public helloworld
.super java/lang/Object
.method public static main([Ljava/lang/String;)V
.limit stack 2 ;Max stack depth
.limit locals 1 ;Locals + args = 0 + 1 = 1
getstatic java/lang/System/out Ljava/io/PrintStream;
;Stack: System.out object
ldc "Hello world!"
;Stack: System.out object, string
invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
;Stack: /
return
.end method
Обратите внимание, что у этого класса нет конструктора.
Вы можете собрать и запустить эту программу с
java -jar jasmin.jar helloworld.j
java helloworld
1 Набор двоичных файлов для выполнения приложений Java.
2 Набор двоичных файлов для разработки приложений Java, включая JRE.
3< /sup> Обзор Википедии.
4 Код метода на самом деле является атрибутом первого.
person
Margaret Bloom
schedule
14.09.2016