Jasmin assembler을 사용하여 자바 서브 세트를 Java 바이트 코드로 컴파일하는 컴파일러를 작성 중입니다.Jasmin Assembler : 메소드 호출에 관한 문서
메서드 호출시 매개 변수를 전달하는 방법을 정확하게 설명하는 문서가 있으면 방황합니다. official documentation에는 이러한 작업이 수행되는 방법에 대한 몇 가지 예만 나와 있습니다.
invokevirtual mypackage/MyClass/foo(Ljava/lang/Object;[I)I
그러나이 구문에 대한 적절한 정의가 없습니다.
내가 알고 자하는 것은 전달할 매개 변수의 유형을 지정하는 데 사용해야하는 다른 문자입니다. 예를 들어 공식 문서에서 '나는'int에 사용되는 것을 보았습니다. 추측을 통해 'C'로 char 유형을 지정하고 'F'로 부동으로 지정할 수 있습니다. 나는 'L'이 갈망에 사용될 수 있다고 가정하지만, 나에게이 오류 제공 :
Exception in thread "main" java.lang.ClassFormatError: Method "println" in class Test3 has illeagal signature "L(V)"
그것은 복식에 같은 수를하지만, 나는 완전히 아직 구현하지 않았습니다.
이 특정 문제 외에도 일반적으로 메서드 호출을위한 기발한 특수 구문이 있기 때문에 일반적으로 유용 할 것이므로 추측을 통해이를 찾을 필요가 없습니다. 당신은 JVM 사양을 보면
[JVM 형 서명 (http://docs.oracle.com/javase/1.5.0/docs/guide/jni/spec/types.html# wp276) –
대단히 고마워요! –