class 역 컴 파일 파일 파일 분석

class 역 컴 파일 파일 파일 분석
자바 소스 코드:
/**
 * Copyright (c) 2011 Trusted Software and Mobile Computing(TSMC)
 * All rights reserved.
 * Author: Jarg Yee <[email protected]>
 * http://jarg.iteye.com/
 */
/*
 * 【  】  class     
 */
public class Parse
{
 public static void main(String[] args)
 {
  int x = 7;
  int y = 3;
  x = x++;
  y = ++y;
  System.out.println(x);
  System.out.println(y);
 }
}

역 컴 파일 후 명령:
자바 역 컴 파일
바이트 코드
---------- Java    ----------
Compiled from "Parse.java"
public class Parse extends java.lang.Object{
public Parse();
  Code:
   0: aload_0
   1: invokespecial #1; //Method java/lang/Object."<init>":()V
   4: return

  LineNumberTable: 
   line 10: 0



public static void main(java.lang.String[]);
  Code:
   0: bipush 7
   2: istore_1
   3: iconst_3
   4: istore_2
   5: iload_1
   6: iinc 1, 1
   9: istore_1
   10: iinc 2, 1
   13: iload_2
   14: istore_2
   15: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
   18: iload_1
   19: invokevirtual #3; //Method java/io/PrintStream.println:(I)V
   22: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
   25: iload_2
   26: invokevirtual #3; //Method java/io/PrintStream.println:(I)V
   29: return

  LineNumberTable: 
   line 14: 0
   line 15: 3
   line 16: 5
   line 17: 10
   line 18: 15
   line 19: 22
   line 20: 29



}

출력 완료 (0 초 소요) - 정상 종료
 
해석: 역 컴 파일 후의 명령 을 통 해 알 수 있 듯 이 이 Parse 류 는 두 가지 함 수 를 포함한다. 1. 기본 구조 함수 Public Parse ().public Parse();부모 클래스 java. lang. Object 무 참 구조 함수 호출   0: aload_0 부분 변수 배열 색인 0 위치 에서 Object 대상 의 인용 을 작업 스 택 으로 불 러 옵 니 다.   1: invokespecial #1; //Method java/lang/Object."":()V  작업 스 택 의 대상 참조 호출 클래스 java. lang. Object 무 참 구조 함수 Object ()   4: return  방법 반환
2. main 함수 public static void main (java. lang. String []);String 형식 대상 참조 args 부분 변수 배열 색인 0 위치 (대응 변수 args)
   int x = 7;    0: bipush 7  글자 액면가 가 7 인 바이트 형 데 이 터 를 조작 스 택 에 눌 러 넣다.   2: istore_1    자바 방법 스 택 에서 스 택 맨 위 를 꺼 내 고 부분 변수 배열 색인 1 위치 (대응 변수 x) 에 저장 합 니 다.      int y = 3;    3: iconst_3   글자 액면가 가 3 인 정형 데 이 터 를 조작 수 창고 에 눌 러 넣다   4: istore_2    팝 업 동작 수 스 택 상단 요소, 부분 변수 배열 색인 2 위치 (대응 변수 y)      x = x++;    5: iload_1     부분 변수 배열 색인 1 위치 데이터 (대응 변수 x) 를 추출 하여 작업 스 택 에 누 르 십시오.   6: iinc 1, 1    부분 변수 배열 색인 1 위치 데이터 (대응 변수 x) 추가 1   9: istore_1    스 택 상단 요 소 를 팝 업 하고 부분 변수 배열 색인 1 위치 (대응 변수 x) 에 저장 합 니 다.      y = ++y;    10: iinc 2, 1    부분 변수 배열 색인 2 위치 데이터 (대응 변수 y) 추가 1   13: iload_2     부분 변수 배열 색인 2 위치 데이터 (대응 변수 y) 를 추출 하여 작업 스 택 에 누 르 십시오.   14: istore_2    스 택 상단 요 소 를 팝 업 하고 부분 변수 배열 색인 2 위치 (대응 변수 y) 에 저장 합 니 다.      System.out.println(x);    15: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;    System 류 의 java. io. PrintStream 류 정적 영역 out 을 꺼 내 서 작업 스 택 에 눌 러 넣 습 니 다.   18: iload_1     부분 변수 배열 색인 1 위치 데이터 (대응 변수 x) 를 추출 하여 작업 스 택 에 누 르 십시오.   19: invokevirtual #3; //Method java/io/PrintStream.println:(I)V   작업 스 택 의 대상 은 out 호출 클래스 자바. io. PrintStream 밴드 정형 매개 변 수 를 참조 하 는 일반적인 방법 println ()      System.out.println(y);   System. out. println (x) 과 유사 합 니 다.명령 과정   22: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;    System 류 의 java. io. PrintStream 류 정적 영역 out 을 꺼 내 서 작업 스 택 에 눌 러 넣 습 니 다.   25: iload_2     부분 변수 배열 색인 2 위치 데이터 (대응 변수 y) 를 추출 하여 작업 스 택 에 누 르 십시오.   26: invokevirtual #3; //Method java/io/PrintStream.println:(I)V   작업 스 택 의 대상 은 out 호출 클래스 자바. io. PrintStream 밴드 정형 매개 변 수 를 참조 하 는 일반적인 방법 println ()      함수 반환, 반환 형식 void   29: return
 
\ # 로 시작 한 후 정수 와 상수 탱크 의 데 이 터 를 대응 합 니 다.
 
부언: 자바 의 모든 클래스 (자바. lang. Object 를 제외 하고) 는 자바. lang. Object 를 직접 또는 간접 적 으로 계승 합 니 다. 즉, 모든 클래스 는 자바. lang. Object 의 직접 또는 간접 적 인 하위 클래스 입 니 다. 자바 가 단일 계승 에 따라 자바. lang. Object 이외 의 클래스 를 계승 했다 면 이러한 종 류 는 자바. lang. Object 류 를 간접 적 으로 계승 합 니 다.그렇지 않 으 면 자바. lang. Object 류 를 기본적으로 계승 합 니 다. 이 결론 은 역 컴 파일 후 명령 Public class Parse extends 자바. lang. Object 에서 볼 수 있 습 니 다.
 
원문:http://jarg.iteye.com/blog/1005685

좋은 웹페이지 즐겨찾기