• 제목/요약/키워드: Bytecodes

검색결과 20건 처리시간 0.029초

CTOC에서 중간 코드에서 효율적인 바이트코드로의 변환기 설계 (Design of Translator for Efficient Bytecodes from Intermediated Codes in CTOC)

  • 김영국;조선문;김기태;유원희
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2004년도 추계학술발표논문집(상)
    • /
    • pp.445-448
    • /
    • 2004
  • 자바는 자바 가상기계를 사용해서 플랫폼에 독립적으로 사용할 수 있는 장점을 가진다. 그러나 자바가상머신은 인터프리터 방식을 이용하기 때문에 다른 컴파일언어에 비해서 수행속도가 느리다는 단점을 가진다. 이런 단점을 극복하기 위해서 많은 최적화나 JIT컴파일러 그리고 네이티브 코드로의 변환과 같은 연구들이 많이 연구되었다. 이전의 연구들은 한계성을 가지고 있어서 자바에서 수행시간의 문제는 지금도 문제로 남아있다. 이전의 문제점 해결의 극복의 대안으로 바이트코드를 최적화하는 프레임워크인 CTOC를 설명하고, CTOC에서 사용하는 중간코드로 사용하는 3-주소형식의 CTOC-T를 바이트코드로 변환하고, CTOC-T에서 바이트코드형식으로 변환할 때 생기는 과다한 load/store의 문제점을 해결한다.

  • PDF

Translation Java Bytecode to EVM SIL Code for Embedded Virtual Machines

  • Lee, Yang-Sun;Park, Jin-Ki
    • 한국멀티미디어학회논문지
    • /
    • 제8권12호
    • /
    • pp.1658-1668
    • /
    • 2005
  • This paper presents the bytecode-to-SIL translator which enables the execution of the java program in EVM(Embedded Virtual Machine) environment without JVM(java Virtual Machine), translating bytecodes produced by compiling java programs into SIL(Standard Intermediate Language) codes. EVM, what we are now developing, is a virtual machine solution that can download and execute dynamic application programs written in sequential languages like C language as well as object oriented languages such as C#, Java, etc. EVM is a virtual machine mounted on embedded systems such as mobile device, set-top box, or digital TV, and converts the application program into SIL, an assembly language symbolic form, and execute it. SIL is a virtual machine code for embedded systems, based on the analysis of existing virtual machine codes such as bytecode, MSIL, etc. SIL has such features as to accommodate various programming languages, and in particularly has an operation code set to accept both object-oriented languages and sequential languages. After compiling, a program written in java language is converted to bytecode, and also executed by JVM platform but not in other platform such as .NET, EVM platform. For this reason, we designed and implemented the bytecode-to-SIL translator system for programs written in java language to be executed in the EVM platform without JVM. This work improves the execution speed of programs, enhances the productivity, and provides an environment for programmers to execute application programs at various platforms.

  • PDF

자바프로그램 분석을 위한 바이트코드 시뮬레이터 (Bytecode Simulator for Analyzing Java Programs)

  • 김도우;정민수
    • 한국정보처리학회논문지
    • /
    • 제7권7호
    • /
    • pp.2086-2094
    • /
    • 2000
  • 자바의 같이 객체지항 언어로 작성된 프로그램은 프로그램의 실행과 관련된 정보들과 제어의 흐름이 숨겨져 있기 때문에 분석하기가 쉽지 않다. 그러나, 자바의 겨우는 컴파일 과정을 통해 생성된 클레스 파일에 프로그램의 수행과 관련된 벙보가 포함되어 있다. 자바 가상 기계는 클레스 파일에 포함된 바이트코드를 실행시킨다. 따라서 바이트코드가 실행되는 과정을 살펴보면 자바소스 프로그램에 대해 보다 명확한 분석과 쉬운 이해가 가능해 진다. 본 논문에서는 자바 프로그램의 구조와 객체들 사이의 제어의 흐름을 이해하는데 도움을 준다.

  • PDF

CTOC에서 자바 바이트코드 최적화를 위한 Value Numbering (Value Numbering for Java Bytecodes Optimization in CTOC)

  • 김기태;김지민;김제민;유원희
    • 한국컴퓨터정보학회논문지
    • /
    • 제11권6호
    • /
    • pp.19-26
    • /
    • 2006
  • CTOC에서 SSA Form으로 변경된 표현식에 대해 최적화를 적용하기 위해선 중복된 표현식을 제거하여야 한다. 본 논문에서는 이를 위해 VN(Value Numbering)을 적용하였다. VN을 수행하기 위해서 우선 SSA Form 형태로 정보를 유지하는 SSAGraph를 생성하고, 그래프에서 동등한 노드를 찾은 후, SCC(Strong1y Connected Component)를 생성한다. SCC를 통해 동등한 노드에 같은 valnum을 설정하게 된다. VN을 수행한 결과 SSA Form 수행 과정에서 추가되었던 많은 노드에 대한 제거를 확인할 수 있었다. 설정된 valnum은 최적화와 타입 추론에 적용된다.

  • PDF

SSA Form에서 부분 중복 제거를 이용한 최적화 (Optimization Using Partial Redundancy Elimination in SSA Form)

  • 김기태;유원희
    • 정보처리학회논문지D
    • /
    • 제14D권2호
    • /
    • pp.217-224
    • /
    • 2007
  • CTOC에서는 정적으로 값과 타입을 결정하기 위해 변수를 배정에 따라 분리하는 SSA Form을 사용한다. SSA Form은 최근 데이터 흐름분석과 코드 최적화를 위해 컴파일러의 중간 표현으로 많이 사용되고 있다. 하지만 기존의 SSA Form은 표현적보다는 주로 변수에 관련된 것이다. 따라서 SSA Form 형태의 표현식에 대해 최적화를 적용하기 위해 중복된 표현식을 제거한다. 본 논문에서는 좀더 최적화된 코드를 얻기 위해 부분 중복 표현식을 정의하고, 부분 중복 표현식을 제거하는 방법을 구현한다.

API k-gram 기반의 안드로이드 버스마크 (An Android Birthmark based on API k-gram)

  • 박희완
    • 정보처리학회논문지:컴퓨터 및 통신 시스템
    • /
    • 제2권4호
    • /
    • pp.177-180
    • /
    • 2013
  • 소프트웨어 버스마크는 프로그램을 인식하는데 사용될 수 있는 고유한 특징을 의미한다. 소프트웨어 버스마크는 단순한 프로그램 변환에 의해서 삭제되지 않기 때문에 코드 도용을 탐지하는데 사용된다. 본 논문에서는 안드로이드 앱에 대한 API k-gram 기반의 버스마크 기법을 제안한다. 안드로이드 SDK는 프로그래머가 쉽게 앱을 개발할 수 있도록 다양한 라이브러리를 제공한다. 그리고 안드로이드 SDK를 사용하기 위해서는 반드시 API 메소드 호출을 이용해야만 한다. API 메소드 호출 명령어는 다른 명령어로 바꾸거나 삭제하기 어렵기 때문에 애플리케이션의 고유한 특징으로서 사용될 수 있다. 본 논문에서 제안하는 버스마크의 효용성을 보여주기 위해서 기존의 버스마크 기법과 비교하였고 오픈소스 앱을 대상으로 평가하였다. 실험으로부터 API k-gram 버스마크가 기존 버스마크보다 신뢰도와 강인도가 높은 것을 확인하였다.

Intermediate Language Translator for Execution of Java Programs in .NET Platform

  • Lee, Yang-Sun;Na, Seung-Won;Hwang, Dae-Hoon
    • 한국멀티미디어학회논문지
    • /
    • 제7권6호
    • /
    • pp.824-831
    • /
    • 2004
  • This paper presents the java bytecode-to-.NET MSIL intermediate language translator which enables the execution of the java program in .NET environments without JVM(java Virtual Machine), translating bytecodes produced by compiling java programs into MSIL codes. Java, one of the most widely used programming languages recently, is the language invented by James Gosling at Sun Microsystems, which is the next generation language independent of operating systems and hardware platforms. Java source code is compiled into bytecode as intermediate code independent of each platform by compiler, and also executed by JVM. .NET language such as C# and .NET platform in Microsoft Corp. has been developed to meet the needs of programmers, and cope with Java and JVM platform of Sun Microsystems. After compiling, a program written in .NET language is converted to MSIL code, and also executed by .NET platform but not in JVM platform. For this reason, we designed and implemented the java bytecode-to-.NET MSIL translator system for programs written in java language to be executed in the. NET platform without JVM. This work improves the execution speed of programs, enhances the productivity, and provides a environment for programmers to develop application programs without limitations of programming languages.

  • PDF

CTOC에서 정적 단일 배정문 형태를 이용한 지역 변수 분리 (Split Local Variables Using Static Single Assignment Form in CTOC)

  • 이갑래;유원희;김기태
    • 한국콘텐츠학회논문지
    • /
    • 제5권3호
    • /
    • pp.73-81
    • /
    • 2005
  • CTOC(Classes To Optimized Classes)는 자바 바이트코드의 최적화와 분석을 위해 현재 개발 중인 프레임워크이다. CTOC는 스택 기반인 바이트코드를 최적화와 분석을 쉽게 하기 위해 3-주소 형태로 변환한다. 바이트코드가 타입에 관한 정보를 포함하지만 스택 기반의 동작을 수행하기 때문에 지역 변수를 위한 명시적인 타입을 갖지 못하는 경우가 발생한다. 따라서 바이트코드에서 3-주소 형태로 변환하는 과정에 사용되는 모든 변수는 정적 타입을 가져야 하는 문제점이 발생한다. 왜냐하면, 프로그램의 최적화나 분석을 위해서는 지역 변수의 타입을 알아야 하기 때문이다. 본 논문은 CTOC 프레임워크의 전반부로 바이트코드를 스택을 사용하지 않는 3-주소 형태로 변환하는 과정을 수행한다. 이 과정에서 스택 코드 형태인 CTOC-B 코드를 생성하고, 제어 흐름 그래프를 생성하여 바이트코드 수준에서 분석을 수행한다. 또한 정적 타입을 제공하기 위한 중간 과정으로 타입을 갖지 않는 CTOC-T 코드를 생성한다. 이를 위해 정적 단일 배정문 형태(Static Single Assignment Form)를 사용하여 모든 변수를 분리하고 각 변수에 새로운 이름으로 재명명하는 동작을 수행한다. 분리된 변수들은 추후 정적 타입 추론을 위한 준비 단계로 사용된다.

  • PDF

정적 단일 배정 형태를 위한 정적 타입 배정에 관한 연구 (A Study on Static Type Assignment for Static Single Assignment Form)

  • 김기태;유원희
    • 한국콘텐츠학회논문지
    • /
    • 제6권2호
    • /
    • pp.117-126
    • /
    • 2006
  • 자바 바이트코드는 많은 장점을 갖지만 수행 속도가 느리고 분석이 어렵다는 단점을 갖는다 이를 극복하기 위해 바이트코드에 대한 분석과 최적화가 수행되어야 한다. 우선 바이트코드에 대한 제어 흐름 분석을 수행한다. 제어 흐름 분석 후 데이터 흐름 분석과 최적화를 위해서 변수가 어디서 정의되고 어디서 사용되는지에 대한 정보가 필요하다. 각 위치에서 변수에 배정되는 값에 따라 동일한 이름의 변수가 다른 위치에서 다른 값을 가지는 경우가 발생한다. 따라서 정적으로 값과 타입을 결정하기 위해서 변수는 배정되는 것에 따라 분리되어야 한다. 이를 위해 단일 배정 형태를 이용하여 표현할 수 있다. 정적 단일 배정형태(SSA Form)로 변경한 후 정적 분석과 최적화를 위해서는 각 변수와 표현식이 나타내는 각각의 노드에 타입 정보를 설정해야 한다. 본 논문은 타입에 대한 기본 정보를 바탕으로 관련된 동등한 노드를 발견하고 강 결합 요소로 설정한 후 각 노드에 타입을 효율적으로 설정하는 방법을 제안한다

  • PDF

CTOC에서 루프 트리 구성하기 (Constructing A Loop Tree in CTOC)

  • 김기태;김제민;유원희
    • 정보처리학회논문지D
    • /
    • 제15D권2호
    • /
    • pp.197-206
    • /
    • 2008
  • 최근 많이 사용되고 있는 자바 바이트코드의 분석과 최적화를 효율적으로 수행하기 위해 CTOC 프레임워크가 구현되었다. CTOC에서는 바이트코드에 대해 분석과 최적화를 수행하기 위해 가장 먼저 eCFG를 생성하였다. 분석하기 어렵다는 바이트코드의 특성 때문에 기존의 바이트 코드를 제어 흐름 분석에 적합하게 확장하여 제어 흐름 그래프를 작성하였다. 이를 확장된 제어 흐름 그래프인 eCFG라 부른다. 또한 정적으로 분석하기 위해 eCFG를 SSA Form으로 변환 하였다. 변환 시 많은 프로그램에서 루프가 발견되었다. 이전 CTOC에서는 루프에 대한 처리를 수행하지 않은 상태에서 직접 SSA Form으로 변환을 수행하였다. 하지만 SSA Form으로 변환하기 이전에 루프에 대한 부분을 처리하면 더욱 효율적인 SSA Form을 생성할 수 있게 된다. 본 논문은 루프에 대한 처리를 효율적으로 하기 위해 eCFG를 SSA Form으로 변환하는 과정 이전에 루프를 발견하고 이와 관련된 루프 트리를 생성하는 과정을 보인다.