Mac OSX上的Jasmin JVM设置

时间:2016-09-13 22:56:04

标签: java-bytecode-asm jasmin

我已经为大学的汇编语言课程下载了Jasmin JVM。我目前遇到了一些困难。

如何编写.j文件:       - 我尝试在textedit和eclipse中编写文件并将其保存为.j文件,然后将其移动到目录中,但它不会让我从终端运行它。

如果有人可以帮助我,或者让我朝着正确的方向前进,那将非常感激。

1 个答案:

答案 0 :(得分:3)

Jasmin a JVM,它是Java bytecode汇编程序。

由于它部署为JAR,您需要JRE 1 才能使用它,但安装整个JDK 2 可能是一个更好的选择,因为无论如何你都要用Java开发。

要运行它,假设{<1}}位于您的 PATH 环境var中,您可以:

  1. 移至java所在的目录并运行

    jasmin.jar
  2. 编辑您的 CLASSPATH 环境var以包含java -jar jasmin.jar <input> 文件名,然后在任何地方上面运行上面的命令。

  3. 为了完全理解Jasmin的指令,你最好阅读有关Java class file format 3 的内容,特别是关于各个部分:标题,常量池,属性,方法 4 ,字段。
    最后,您需要学习byte code instructions

    小心Jasmin不是一个简单的,低级别的汇编程序 例如,它完全从jasmin.jargetXXX等指令中抽象出常量池 此外,某些说明也有不同的名称(例如invokeXXX&lt; - &gt; invokenonvirtual),有关完整列表,请参阅here

    最后,必须具备JLS CLASS 文件格式的扎实知识,特别是如何实现泛型和内部类。

    一个简单的invokespecial

    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 
    

    1 执行Java应用程序的二进制文件集 2 用于开发Java应用程序的二进制文件集,包括JRE 3 关于Wikipedia的概述 4 方法的代码实际上是前者的属性。