Настройка Jasmin JVM на Mac OSX

Я скачал Jasmin JVM для моего курса языка ассемблера в университете. В настоящее время у меня есть некоторые трудности.

Как мне написать файлы .j: - Я попытался записать файлы в textedit и eclipse и сохранить их как файл .j, а затем переместить в каталог, но он не позволяет мне запускать его из терминала.

если кто-нибудь может помочь мне или привести меня в правильном направлении, это было бы очень признательно.


person rheak    schedule 13.09.2016    source источник


Ответы (1)


Jasmin не JVM, это байт-код Java ассемблер.

Поскольку он развернут как JAR, вам нужен JRE1, чтобы использовать его, однако установив весь JDK2 может быть лучшим выбором, поскольку вы все равно собираетесь разрабатывать с помощью Java.

Чтобы запустить его, предполагая, что java находится в вашей переменной окружения PATH, вы можете:

  1. Перейдите в каталог, где находится jasmin.jar, и запустите

    java -jar jasmin.jar <input>
    
  2. Измените переменную среды 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
comment
Спасибо, теперь я чувствую себя более знакомым с этим. Мне было любопытно, в каком текстовом редакторе вы пишете код jasmin? - person rheak; 14.09.2016
comment
@rheak Обычно используется по умолчанию: Блокнот в Windows, kate в KDE, текстовый редактор в OS X. Мне не нужны причудливые функции при кодировании с помощью Jasmin, но я не пишу байт-код Java каждый день. - person Margaret Bloom; 14.09.2016