• 제목/요약/키워드: Dead Code Elimination

검색결과 3건 처리시간 0.016초

CTOC에서 코드 최적화 수행 (Processing of Code Optimization in CTOC)

  • 김기태;유원희
    • 한국멀티미디어학회논문지
    • /
    • 제10권5호
    • /
    • pp.687-697
    • /
    • 2007
  • 자바 바이트코드는 많은 장점을 가지고 있지만, 수행속도가 느리고 프로그램 분석이나 최적화에 적절한 표현이 아니라는 단점이 존재한다. 따라서 네트워크와 같은 실행 환경에서 효율적으로 수행되기 위해서는 최적화된 코드로 변환이 필요하다. 따라서 우리는 최적화된 코드로의 변환을 위해 CTOC를 구현하였다. 최적화 과정에서 CTOC는 정적으로 값과 타입을 결정하기 위해 변수를 배정에 따라 분리하는 SSA From을 사용하였다. 하지만 SSA Form변환 과정에서 ${\phi}$-함수의 추가에 의해 오히려 노드의 수가 증가되는 문제점이 발생하였다. 이를 해결하기 위해 본 논문에서는 SSA Form에서 복사 전파와 죽은 코드 제거 최적화를 수행한다. 또한 기존의 SSA Form은 표현식보다는 주로 변수에 관련된 것이라는 단점이 존재한다. 따라서 본 논문에서는 SSA Form 형태의 표현식에 대해 복사 전파와 죽은 코드 제거와 같은 최적화를 적용한 후 다시 중복된 표현식을 제거하는 과정을 추가로 수행한다.

  • PDF

CTOC에서 죽은 코드 제거 구현 (Implementation of Dead Code Elimination in CTOC)

  • 김기태;김제민;유원희
    • 한국컴퓨터정보학회논문지
    • /
    • 제12권2호
    • /
    • pp.1-8
    • /
    • 2007
  • 자바 바이트코드가 많은 장점을 갖지만, 수행 속도가 느리고 분석하기 어렵다는 단점이 존재한다. 따라서 자바 클래스 파일이 네트워크와 같은 실행 환경에서 효과적으로 실행되기 위해서는 최적화된 코드로 변환이 요구된다. 최적화된 코드로 변환하기 위해 CTOC를 구현하였다. 정적으로 값과 타입을 결정하기 위해 CTOC는 변수를 배정에 따라 분리하는 SSA Form을 사용하였다. 또한 문장의 표현을 위해 트리 구조를 사용하였다. 하지만 SSA Form 변환 과정에서 $\phi$-함수의 삽입에 의해 오히려 노드의 수가 증가하게 되었다. 본 논문은 SSA Form에서 더욱 최적화된 코드를 얻기 위해 죽은 코드를 제거하는 과정을 보인다. 각 노드에 대해 새로운 live 필드를 추가하고 트리 구조에서 죽은 코드 제거 과정을 수행한다. 실험 결과를 통해 죽은 코드 제거 후 상당한 노드의 수가 줄어든 것을 확인할 수 있다.

  • PDF

컴파일러에 의한 C레벨 에러 체크 (Compiler triggered C level error check)

  • 정지문;윤종희;이종원;백윤흥
    • 정보처리학회논문지A
    • /
    • 제18A권3호
    • /
    • pp.109-114
    • /
    • 2011
  • IR(Intermediate Representation) 최적화 과정은 컴파일러 back-end의 중요한 부분으로서 sub-expression elimination, dead code elimination 등 최적화 기법들을 사용한다. 하지만 IR 최적화 단계에서 생기는 에러들을 검출하고 디버깅하는데 많은 어려움이 있다. 그 첫 번째 이유로는 컴파일 된 어셈블리 코드를 해독하여 에러를 체크하기 어렵고 두 번째로는 IR 최적화 단계에서 에러가 생겼는지 결정 짓기 어렵기 때문이다. 이런 이유들로 인하여, 우리는 C 레벨에서 IR 코드변환 무결점 여부를 체크하기 위한 기법들에 관한 연구를 진행하여 왔다. 우리는 MeCC(Memory Comparison-based Clone) 탐색기를 기반으로 하여, 최적화하기 전 IR코드와 최적화 한 후의 IR코드를 각각 C코드로 다시 변환한 뒤, 이 두 개의 C코드를 MeCC의 입력으로 주고, 결과의 일치 여부를 확인하는 방법을 사용한다. 하지만 MeCC가 완벽한 결과를 알려주지 않기 때문에, 우리는 각 IR 최적화 기법마다의 특징에 대한 정보를 사전에 처리해서 그 결과의 정확도를 높였다. 이 논문에서는 dead code elimination, instruction scheduling 및 common sub-expression elimination 등 최적화 기법들을 이용한 변환 코드들을 예시로 실험하여 최종적으로 MeCC에서의 C 레벨 코드의 정확한 에러 체크 동작여부를 보여준다.