대학의 어셈블리 언어 과정에 Jasmin JVM을 다운로드했습니다. 나는 현재 약간의 어려움을 겪고있다.Mac OSX의 Jasmin JVM 설정
.j 파일을 작성하는 방법 :- textedit 및 eclipse에서 파일을 작성하고 .j 파일로 저장 한 다음 디렉토리로 이동했지만 터미널에서 실행하도록하지는 않았습니다.
나를 도와 주거나 올바른 방향으로 나를 인도 할 수 있다면 크게 감사하겠습니다.
대학의 어셈블리 언어 과정에 Jasmin JVM을 다운로드했습니다. 나는 현재 약간의 어려움을 겪고있다.Mac OSX의 Jasmin JVM 설정
.j 파일을 작성하는 방법 :- textedit 및 eclipse에서 파일을 작성하고 .j 파일로 저장 한 다음 디렉토리로 이동했지만 터미널에서 실행하도록하지는 않았습니다.
나를 도와 주거나 올바른 방향으로 나를 인도 할 수 있다면 크게 감사하겠습니다.
Jasmin이 하지JVM입니다, 그것은 Java bytecode 어셈블러이다. 그것이 JAR로 배포되기 때문에
당신은 어쨌든 자바로 개발하는 것 때문에 그러나 전체 JDK2이 더 나은 선택이 될 수 있습니다 설치는 JRE1 그것을 사용해야합니다.
이jasmin.jar
가 위치한 디렉토리로 이동이
java -jar jasmin.jar <input>
을 편집 CLASSPATH를 실행 java
가정을 실행하려면
, 당신은 할 수 있습니다 PATH 환경 VAR에 환경 변수 jasmin.jar
파일 이름을 포함하고 위의 명령을 실행하려면 어디서나. 속성 헤더, 상수 풀, 방법 4 필드 : 완전히 특히 다양한 섹션에 대해의 Java class file format3에 대해 뭔가를 읽고의 더 나은 재스민의 지시를 이해하기 위해
.
마지막으로 byte code instructions을 알아야합니다.
Jasmin은 단순한 저수준 어셈블러가 아니므로주의하십시오.
예를 들어 getXXX
및 invokeXXX
과 같은 명령어에서 상수 풀을 완전히 추상화합니다. , 전체 목록은 here를 참조 -
또한 몇 가지 지침 (>invokespecial
예를 들어, invokenonvirtual
<) 다른 이름이 있습니다.
마지막으로 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 응용 프로그램을 실행하는java -jar jasmin.jar helloworld.j
java helloworld
1와 바이너리의 집합을이 프로그램을 실행할 수 있습니다.
Java 응용 프로그램을 개발할 수있는 바이너리 세트입니다. 여기에는 JRE가 포함됩니다.
개요는 Wikipedia입니다.
메소드의 코드는 실제로 전자의 속성입니다.
감사합니다. 지금이 점에 대해 더 잘 알고 있습니다. 어떤 종류의 텍스트 편집기에 jasmin 코드를 쓰는지 궁금했다. – rheak
@rheak 일반적으로 Windows의 메모장, KDE의 kate, OS X의 텍스트 편집기. Jasmin으로 코딩 할 때 멋진 기능이 필요하지 않지만 Java 바이트 코드 asm을 매일 작성하지는 않습니다. –