Саж версия Jasmin не в состоянии собрать файлы сборки Jasmin - PullRequest
1 голос
/ 28 ноября 2010

У меня есть как версия Jasmin 2.4 от Jasmin SourceForge, так и версия Jasmin 2.4 из проекта Soot (по адресу sable.mcgill.ca, помеченная как «jasminclasses»), а версия Soot (которая мне нужна) не делает. кажется, работает правильно.

Я сделал простой компилятор, который сначала компилируется в JVM-сборку Jasmin, а затем использует Jasmin для сборки в файлы классов JVM. Я использовал обычную версию Jasmin с сайта Jasmin SourceForge, и она работала отлично; все скомпилировано и работает правильно. Теперь я начал выполнять оптимизацию с использованием инфраструктуры Soot, и все это прекрасно работает, если я не пытаюсь преобразовать оптимизированный код обратно в файл класса.

Поскольку я использую Soot сейчас, я должен использовать версию Jasmin для Soot, которая поддерживает JasminOutputStream, который использует Soot. Саутская версия Jasmin выглядит так, как будто она по-прежнему способна обрабатывать Jasmin-файлы «старомодным» способом, читая файл «.j» вместо того, чтобы принимать входной поток, но когда я пытаюсь (для первоначальной сборки до оптимизации), версия Soot не работает.

Если я делаю

java -cp jasmin.jar jasmin.Main MyClass.j

Я получаю вывод "Generated: MyClass.class", как и ожидалось.

Если я это сделаю (где jasminclasses - это версия Jasmin в саже)

java -cp jasminclasses-2.4.0.jar jasmin.Main MyClass.j

Я получаю вывод

MyClass.j:5: Warning - Syntax error.
.field public n
                ^
MyClass.j:5: Error - Couldn't repair and continue parse.
.field public n
                ^
MyClass.j: Found 2 errors`

Строка 5 просто .публичный п И я В этом нет ничего неправильного, и, как показано выше, он прекрасно компилируется с обычной версией Jasmin.

Для полноты, вот еще немного кода вокруг этого пункта:

.source MyClass.j
.class public MyClass
.super AnotherClass

.field public n I

.method public <init>()V
 aload_0
 invokenonvirtual AnotherClass/<init>()V
 return
.end method

Все там хорошо и прекрасно собирается с обычным жасмином.

Кто-нибудь знает, ожидает ли Саас-версия Jasmin другого синтаксиса? Как и в случае с большинством вещей, касающихся Сажи и Жасмин, в первую очередь в Интернете не так уж много всего, не говоря уже о том, что я ищу, поэтому мой поиск в Google мало что дает.

Заранее благодарю за любую помощь, я действительно расстраиваюсь здесь. Следующим моим шагом будет отладка пакета Jasmin в Soot и посмотреть, что он там делает и почему он не работает, но я надеюсь, что пока мне не нужно заходить так далеко только для этого.

...