2016-09-13 9 views
1

대학의 어셈블리 언어 과정에 Jasmin JVM을 다운로드했습니다. 나는 현재 약간의 어려움을 겪고있다.Mac OSX의 Jasmin JVM 설정

.j 파일을 작성하는 방법 :- textedit 및 eclipse에서 파일을 작성하고 .j 파일로 저장 한 다음 디렉토리로 이동했지만 터미널에서 실행하도록하지는 않았습니다.

나를 도와 주거나 올바른 방향으로 나를 인도 할 수 있다면 크게 감사하겠습니다.

답변

3

Jasmin하지JVM입니다, 그것은 Java bytecode 어셈블러이다. 그것이 JAR로 배포되기 때문에

당신은 어쨌든 자바로 개발하는 것 때문에 그러나 전체 JDK2이 더 나은 선택이 될 수 있습니다 설치는 JRE1 그것을 사용해야합니다.

  1. jasmin.jar가 위치한 디렉토리로 이동이

    java -jar jasmin.jar <input> 
    
  2. 을 편집 CLASSPATH를 실행 java 가정을 실행하려면

    , 당신은 할 수 있습니다 PATH 환경 VAR에 환경 변수 jasmin.jar 파일 이름을 포함하고 위의 명령을 실행하려면 어디서나. 속성 헤더, 상수 풀, 방법 4 필드 : 완전히 특히 다양한 섹션에 대해의 Java class file format3에 대해 뭔가를 읽고의 더 나은 재스민의 지시를 이해하기 위해

.
마지막으로 byte code instructions을 알아야합니다.

Jasmin은 단순한 저수준 어셈블러가 아니므로주의하십시오.
예를 들어 getXXXinvokeXXX과 같은 명령어에서 상수 풀을 완전히 추상화합니다. , 전체 목록은 here를 참조 -
또한 몇 가지 지침 (>invokespecial 예를 들어, invokenonvirtual <) 다른 이름이 있습니다.

마지막으로 JLSCLASS 파일 형식의 확실한 지식, 특히 제네릭 및 내부 클래스가 구현되는 방법에 대한 지식이 필요합니다.


이 클래스는 생성자가 없음을 간단한 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 응용 프로그램을 실행하는

java -jar jasmin.jar helloworld.j 
java helloworld 

1와 바이너리의 집합을이 프로그램을 실행할 수 있습니다.
Java 응용 프로그램을 개발할 수있는 바이너리 세트입니다. 여기에는 JRE가 포함됩니다.
개요는 Wikipedia입니다.
메소드의 코드는 실제로 전자의 속성입니다.

+0

감사합니다. 지금이 점에 대해 더 잘 알고 있습니다. 어떤 종류의 텍스트 편집기에 jasmin 코드를 쓰는지 궁금했다. – rheak

+0

@rheak 일반적으로 Windows의 메모장, KDE의 kate, OS X의 텍스트 편집기. Jasmin으로 코딩 할 때 멋진 기능이 필요하지 않지만 Java 바이트 코드 asm을 매일 작성하지는 않습니다. –