• 제목/요약/키워드: CFG(Control Flow Graph)

검색결과 17건 처리시간 0.022초

CTOC에서 자바 바이트코드를 위한 정적 단일 배정 형태 (Static Single Assignment Form for Java Bytecodes in CTOC)

  • 김기태;유원희
    • 정보처리학회논문지D
    • /
    • 제13D권7호
    • /
    • pp.939-946
    • /
    • 2006
  • 자바 바이트코드는 많은 장점을 갖지만 수행 속도가 느리고 분석이 어렵다는 단점을 갖는다. 이를 극복하기 위해 바이트코드에 대한 분석과 최적화가 수행되어야 한다. 최적화된 코드를 위해 CTOC를 구현하였다. 바이트코드에 대해 분석과 최적화를 수행하기 위해서는 우선 CFG를 생성해야 한다. 바이트코드의 특성 때문에 기존의 제어 흐름 분석 기술을 바이트코드에 적합하게 확장해야 한다. 또한 정적으로 분석하기 위해 CFG를 SSA Form으로 변환한다. SSA Form으로 변환하기 위해서는 지배 관계, 지배자 트리, 직접 지배자, $\phi$-함수, 재명명, 지배자 경계 등 많은 정보에 대한 계산을 수행한다. 본 논문은 기존의 CFG로부터 SSA Form으로 변환을 위해 알고리즘과 변환 과정을 기술한다. SSA Form이 적용된 그래프는 추후에 타입 추론과 최적화를 위해 사용된다.

계층성을 이용한 VHDL 행위 수준에서의 설계 오류 탐색 알고리듬 (Design Error Searching Algorithm in VHDL Behavioral-level using Hierarchy)

  • 윤성욱;정현권김진주김동욱
    • 대한전자공학회:학술대회논문집
    • /
    • 대한전자공학회 1998년도 추계종합학술대회 논문집
    • /
    • pp.1013-1016
    • /
    • 1998
  • A method for generation of design verification tests from behavior-level VHDL program is presented. Behavioral VHDL programs contain multiple communicating processes, signal assignment statements. So for large, complex system, it is difficult problem to test or simulation. In this paper, we proposed a new hardware design verification method. For this method generates control flow graph(CFG.) and process modeling graph(PMG) in the given under the testing VHDL program. And this method proved very effective that all the assumed design errors could be detected.

  • PDF

자바 바이트코드 프레임워크 구현 (Implementation of Java Bytecode Framework)

  • 김기태;김제민;유원희
    • 한국콘텐츠학회논문지
    • /
    • 제10권3호
    • /
    • pp.122-131
    • /
    • 2010
  • 본 논문에서는 자바 바이트코드를 분석하고 변환할 수 있는 새로운 도구인 CTOC 프레임워크를 설계하고 구현한다. CTOC는 자바 바이트코드의 분석과 코드 변환을 수행할 수 있는 도구로, 바이트코드 분석과 변환 과정을 효율적으로 구현하기 위해 확장된 제어 흐름 그래프인 eCFG(extended Control Flow Graph)와 바이트코드를 효과적으로 처리할 수 있는 중간 코드인 E-Tree(Expression-Tree)를 사용한다. eCFG와 E-Tree를 자바 바이트코드에 대한 분석과 최적화 코드 변환 과정에 적용하여 CTOC의 유용성과 확장 가능성을 보인다.

프로그램 분석을 위한 정적분석 기반 역추적 제어흐름그래프 생성 방안 모델 (Static Analysis Based on Backward Control Flow Graph Generation Method Model for Program Analysis)

  • 박성현;김연수;노봉남
    • 정보보호학회논문지
    • /
    • 제29권5호
    • /
    • pp.1039-1048
    • /
    • 2019
  • 프로그램 자동 분석 방법 중 하나인 기호 실행은 지난 몇 해 동안 기술적으로 크게 향상 되었다. 그러나 여전히 기호실행 그 자체만을 이용하여 프로그램을 분석하는 것은 실용적이지 않다. 가장 큰 이유로는 프로그램 분석 중에 발생하는 경로 폭발 문제로 인한 메모리 부족으로, 기호 실행을 이용해 프로그램의 모든 경로의 해를 구할 수 없다. 따라서 분석가는 모든 경로의 해를 구하는 것이 아닌 취약성을 갖는 지점으로 기호 실행 탐색 경로를 구성하는 것이 실용적이다. 본 논문에서는 기호 실행 과정에서 사용될 수 있는 정적분석 기반 바이너리 역방향 제어 흐름 그래프 생성 방법 기술을 제안한다. 역방향 제어 흐름 그래프 생성을 통해 분석가는 바이너리 내의 잠재적인 취약지점을 선정할 수 있고, 해당 지점으로부터 생성된 역추적 경로는 향후 기호 실행을 위해 효율적으로 사용될 수 있다. 우리는 리눅스 바이너리(x86)를 대상으로 실험을 진행하였고, 실제로 잠재적인 취약점 선정 및 역추적 경로 생성이 바이너리의 다양한 상황에서 가능함을 보였다.

바이트코드를 위한 정적 단일 배정문 기반의 정적 타입 추론 (Static Type Inference Based on Static Single Assignment for Bytecode)

  • 김지민;김기태;김제민;유원희
    • 한국컴퓨터정보학회논문지
    • /
    • 제11권4호
    • /
    • pp.87-96
    • /
    • 2006
  • 바이트코드는 많은 장점을 가지고 있으나 수행 속도가 느리고 프로그램의 분석과 최적화에 알맞은 표현은 아니다. 분석과 최적화를 위하여 바이트코드를 정적 단일 배정문(SSA Form)으로 변환이 수행되어야 한다. 그러나 바이트코드에서 SSA Form으로 변환 시 어떤 변수는 타입 정보를 상실한다. 이를 해결하기 위하여 본 논문에서는 바이트코드에 대한 확장된 제어 흐름 그래프를 생성한다. 또한 정적으로 분석하기 위해 제어 흐름 그래프를 SSA Form으로 변환한다. SSA Form으로 변환을 위하여 지배자. 직접 지배자. 지배자 경계. ${\phi}$-함수, 재명명 등 많은 정보에 대한 계산을 수행한다. 생성된 SSA Form에 알맞은 타입을 선언하기 위해서 다음과 같은 동작들을 수행한다. 먼저 클래스의 호출그래프와 상속 그래프를 생성한다. 그리고 각 노드에 대한 정보를 수집한다. 수집된 정보를 기반으로 동등한 타입의 노드를 찾고 강 결합 요소로 설정한 후 각 노드에 타입을 효율적으로 설정하는 방법을 제안하였다.

  • PDF

VHDL 행위 레벨 설계 검증 (VHDL behavioral-level design verification from behavioral VHDL)

  • 윤성욱;김종현;박승규;김동욱
    • 대한전자공학회:학술대회논문집
    • /
    • 대한전자공학회 1998년도 하계종합학술대회논문집
    • /
    • pp.815-818
    • /
    • 1998
  • Hardware formal verification involves the use of analytical techniques to prove that the implementation of a system confroms to the specification. The specification could be a set of properties that the system must have or it could be an alternative representation of the system behavior. We can represent our behavioral specification to be written in VHDL coding. In this paper, we proposed a new hardware design verification method. For theis method, we assumed that a verification pattern already exists and try to make an algorithm to find a place where a design error occurred. This method uses an hierarchical approach by making control flow graph(CFG) hierarchically. From the simulation, this method was turned out to be very effective that all the assumed design errors could be detected.

  • PDF

사용할 변수의 예측에 사용되는 반복적 알고리즘의 계산순서 재정렬을 통한 수행 속도 개선 (Improvement of Iterative Algorithm for Live Variable Analysis based on Computation Reordering)

  • 윤정한;한태숙
    • 한국정보과학회논문지:소프트웨어및응용
    • /
    • 제32권8호
    • /
    • pp.795-807
    • /
    • 2005
  • 기존의 LVA를 수행하는 알고리즘은 반복적 정보흐름분석(Iterative Data Flow Analysis -DFA) 프레임워크에 따라 프로그램 전체를 반복적으로 스캔하면서 진행되어진다. Zephyr[1] 컴파일러의 경우 이와 같은 반복적 알고리즘으로 LVA를 수행하는 시간이 전체 컴파일 시간에서 약 $7\%$를 차지하고 있다. 기존 LVA 알고리즘은 여러 가지로 개선할 점들이 있다. LVA를 수행하는 기존의 반복적 알고리즘은 알고리즘의 특성상 방문하지 않아도 되는 basic block들에 대한 방문이 잦고, 살아있는 변수들의 집합을 점차적으로 증가해 가면서 구하는 특성상 큰 변수들의 집합에 대한 연산을 계속 하게 된다. 우리는 기존의 알고리즘과 달리 사용된 변수들(USE set)에 대해 Control Flow Graph(CFG)에서 거슬러 올라가면서 LVA를 수행하는 반복적인 알고리즘의 개선안을 제안하고자 한다. 이는 기존의 알고리즘과 같은 결과를 내면서 더 빠른 알고리즘이다. DFA에서의 flow equation을 적용하는 순서를 바꿈으로써 많은 중복 계산을 줄일 수 있다. 이러한 방법으로 인해 basic block을 방문해야만 하는 횟수를 줄이면서 전체 수행 시간을 단축시킨다. 간단한 추가 구현만으로 Zephyr 컴파일러에서의 실험 결과에서 LVA만을 수행하는 시간에서 기존의 알고리즘보다 $36.4\%$ 짧은 시간을 사용하였고, 이는 전체 컴파일 시간을 $2.6\%$ 줄이는 효과를 가져왔다.