• 제목/요약/키워드: 컴파일러 검사

검색결과 27건 처리시간 0.027초

GUI 환경하에서 구동되는 TDL 컴파일러의 설계 및 구현 (A Design and Implementation of GUI-based TDL compiler)

  • 전상은;김성원;안일환;이호석;김우성
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 1998년도 가을 학술발표논문집 Vol.25 No.2 (2)
    • /
    • pp.252-254
    • /
    • 1998
  • 본 연구는 반도체 검사 장비를 국산화하는 프로젝트의 일환 중에서 메모리 칩의 무결성을 검사하는데 사용되는 메모리 테스트 장비의 소프트웨어 개발에 중점을 둔 것이다. 기존에 발표된 프로그램은 자체 개발된 것 없이 외국의 프로그램을 들여와 단지 운영만을 하는 수준이었다. 더욱이 프로그램들도 text모드 하에서만 구동되는 프로그램이었다. 하지만, 본 연구에서는 새로운 컴퓨팅 환경에서 운영될 수 있도록 윈도우즈 하에서 GUI(Graphic User Interface)에 기반한 새로운 TDL 컴파일러를 개발하였다. 개발된 프로그램은 Test Data를 기술하는데 더 효과적이었으며 오류를 검사하고 수정하는데도 큰 효과를 가져다 주었다.

  • PDF

컴파일러 퍼저에서 머신러닝의 적용에 대한 연구 (Research on the Application of Compiler Fuzzingin Machine Learning)

  • 박재열;박성환;권동현
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2023년도 추계학술발표대회
    • /
    • pp.216-217
    • /
    • 2023
  • 브라우저, 컴파일러 등과 같이 규모가 큰 소프트웨어에 존재하는 버그 및 취약점을 찾기 위해 퍼징은 자주 사용되는 방법 중 하나이다. 특히 컴파일러에 존재하는 버그를 찾기 위해 다양한 퍼징 방법이 연구되었으며 컴파일러의 문법 검사를 통과하여 컴파일러 내부 깊은 곳에 존재하는 버그를 찾기 위한 연구도 진행되었다. 최근 머신러닝을 활용하여 특정 언어의 문법을 학습 시킨 모델을 활용해 퍼징을 하는 연구가 활발히 진행되고 있다. 이에 본 논문에서는 컴파일러를 퍼저에 머신러닝을 적용한 연구에 대하여 정리했다.

객체지향 컴파일러의 심벌 테이블 검증을 위한 선언문 복원 기법 (The Declarations Reconstruction Technique for the Symbol Table Verification of the Object-oriented Compiler)

  • 손민성;권혁주;김영근;이양선
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2006년도 추계학술발표대회
    • /
    • pp.669-672
    • /
    • 2006
  • 본 연구팀은 유비쿼터스 게임 플랫폼을 위한 Embedded C++ 컴파일러를 개발하였으며, 컴파일러 개발 과정에서 객체지향언어인 C++과 Java 언어를 모두 수용할 수 있는 심벌 테이블을 설계하였다. 심벌 테이블은 컴파일러의 어휘 분석과 구문 분석 과정을 거친 후 SDT(syntax-directed translation)에 의해 생성된 AST(Abstract Syntax Tree)를 분석하여 인식된 명칭(identifier)과 그 속성(attribute)들을 수집하여 저장하는 자료구조로써, 심벌 테이블에 저장된 속성들은 의미 분석(semantic analysis) 단계에서 수집된 속성과 참조된 명칭의 사용이 타당한지를 검사하고, 코드 생성(code generation) 단계에서 올바른 코드가 생성되도록 하는 중요한 요소이다. 따라서 심벌 테이블의 설계가 올바른지와 입력된 속성이 정확한지에 대한 검증과 분석은 필수 불가결하다. 본 논문에서는 컴파일러 개발과정에서 설계한 심벌 테이블을 검증하고 분석하기 위한 목적으로써 심벌 테이블을 이용하여 선언문을 복원시키는 역번역기(detranslator)에 대하여 기술한다. 구현된 역번역기는 C++ 컴파일러와 Java 컴파일러의 선언문 처리 과정에서 심벌 테이블에 입력된 속성들을 본래의 입력 프로그램으로 역번역한다. 따라서 역번역기를 통하여 심벌 테이블의 완전성과 심벌 테이블에 입력된 속성 정보의 정확성을 쉽게 검증할 수 있으며, 역번역과 함께 출력되는 디버그 정보를 이용하여 효율적으로 컴파일러의 개발과 수정을 할 수 있다.

  • PDF

대소관계 그래프를 이용한 Just-in-Time 컴파일 환경에서의 배열 경계 검사 제거 (Array Bounds Check Elimination using Ineguality Graph in Java Just-in-Time Compiler)

  • 최선일;문수묵
    • 한국정보과학회논문지:소프트웨어및응용
    • /
    • 제32권12호
    • /
    • pp.1283-1291
    • /
    • 2005
  • Just-in-Time 컴파일러를 이용하여 자바의 성능을 향상시키려면 여러 문제들을 극복하여야 한다. 이 문제 중 중요한 부분을 차지하는 것이 배열경계 검사(Array bounds check) 명령어를 어떻게 최적화하느냐는 것이다 정적인 컴파일 환경의 경우에는 이미 많은 연구가 진행되어 매우 강력한 성능을 가지는 알고리즘이 알려져 있으나 컴파일 시간이 수행시간의 일부인 Just-in-Time 컴파일 환경에 이를 적용하기에는 컴파일에 시간을 너무 많이들이는 결과를 낳아 적절하지 않다. 현재 Just-in-Time 컴파일러들은 가볍고 단순한 반면에 중복된 배열 경계 검사를 찾아내는 능력이 다소 부족한 알고리즘을 사용하거나 아니면 강력하지만 정적 단일 배정(Static Single Assignment) 형태로 명령어 표현 방식을 변환해 주어야만 하는 알고리즘을 사용하고 있다. 정적 단일 배정 형태로의 변환 및 되돌림은 가볍고 빠른 컴파일러를 지향하는 Just-in-Time 컴파일러에 부합되지 않는다. 본 논문은 변수 간의 대소관계를 표현하는 그래프를 배열 경계 검사 알고리즘에 적용하는 것을 통해 충분한 성능을 내면서도 정적 단일 배정 형태로의 변환을 필요로 하지 않는 알고리즘을 제안한다. Java에서의 모든 최적화는 Java 언어 명세에서 강제하고 있는 정확한 예외 처리(precise exception) 규칙을 따라야 한다. 명령어의 위치를 바꿈으로써 성능 향상을 꾀하는 최적화의 경우 이것으로 인해 많은 제약을 받게 되는데, 배열 경계 검사 최적화(Array bounds check elimination optimization) 또한 이 규칙에 의해 많은 최적화 기회를 잃는다. 우리는 이 제약을 극복하여 배열 경계 검사최적화의 적용 범위를 넓힐 수 있는 새로운 방법도 아울러 제안하고자 한다.

재겨냥성 C 컴파일러를 위한 테스트 집합 생성 시스템 (Test Suit Generation System for Retargetable C Compilers)

  • 우균;배정호;장한일;이윤정;채흥석
    • 정보처리학회논문지A
    • /
    • 제16A권4호
    • /
    • pp.245-254
    • /
    • 2009
  • 임베디드 프로세서 사용이 증가함에 따라 임베디드 프로세서를 위한 컴파일러를 시기 적절히 개발해야 할 필요성이 증가하고 있다. 컴파일러 후단부를 수정하여 새로운 컴파일러를 구성하는 재겨냥 기법이 이에 적합한 기법으로 채택되고 있다. 이 논문에서는 재겨냥성 C 컴파일러를 테스트하기 위한 테스트 집합 생성 시스템을 제안한다. 제안한 시스템은 문법 커버리지 개념을 이용하여 테스트 집합을 생성한다. 일반적으로 원시 프로그래밍 언어의 문법을 이용하여 테스트 집합을 생성하면 방대한 크기의 테스트 집합이 얻어진다. 그러나 신속히 컴파일러를 출시해야하는 상황에서는 방대한 테스트 집합 크기가 문제가 될 수 있다. 이에 이 논문에서 제안한 시스템은 중간 코드를 고려하여 테스트 집합을 축약하는 기능을 탑재하고 있다. 실험 결과에 따르면, 비록 축약된 테스트 집합 크기는 원본 테스트 집합 크기의 평균 10%에 불과하지만 원본 테스트 집합이 검출할 수 있는 컴파일러 오류의 75% 정도를 검출할 수 있음을 알 수 있었다. 이는 본 논문에서 제시한 축약 기법이 임베디드 컴파일러 개발 초기 단계에서 효과적으로 사용될 수 있음을 의미한다.

C++ 컴파일러에서 심벌 테이블의 검증과 분석을 위한 역번역기의 설계 및 구현 (Design and Implementation of a Detranslator for Verification and Analysis in C++ Compiler)

  • 손민성;권혁주;이양선
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2006년도 춘계학술발표대회
    • /
    • pp.447-450
    • /
    • 2006
  • 본 논문에서는 C++ 컴파일러 구현과정에서 객체지향 언어의 속성을 처리하기 위한 역번역기(detranslator)를 설계하고 구현하였다. 구현된 역번역기는 C++ 컴파일러의 선언부 처리 과정에서 심벌 테이블에 입력된 속성들을 본래의 C++ 프로그램으로 역번역 한다. 따라서 C++ 컴파일러 개발 과정에서 설계된 심벌 테이블과 심벌테이블에 입력된 정보가 올바른지 쉽게 검증할 수 있다. 심벌 테이블은 C++ 컴파일러의 어휘 분석과 구문 분석 과정에서 인식되는 명칭(identifier)에 대하여 그 속성(attribute)들을 수집하여 저장하는 자료구조로, 심벌 테이블에 저장된 속성들은 의미분석(semantic analysis) 단계에서 참조된 명칭의 사용이 타당한지 검사하는데 사용 되어 코드 생성(code generation) 단계에서 올바른 코드가 생성 되도록 한다. 본 역번역기를 구현함으로써 심벌 테이블이 올바르게 설계 되었는지 검증할 수 있으며, 컴파일 할 때 심벌 테이블에 필요한 모든 속성이 저장되어 있는지 쉽게 확인 할 수 있게 되었다. 그리고 디버그 정보도 함께 출력되어 객체지향 언어를 위한 컴파일러 개발의 정확성을 기할 수 있다.

  • PDF

테스트 시스템을 위한 프로그래밍 언어와 컴파일러 설계 (Design of a Programming Language and a Compiler for Test Systems)

  • 고훈준;유원희
    • 한국정보과학회논문지:컴퓨팅의 실제 및 레터
    • /
    • 제8권3호
    • /
    • pp.356-365
    • /
    • 2002
  • 테스트 시스템은 다양한 종류의 반도체 제품을 검사하고 분류한다. 따라서 테스트 시스템은 여러 가지 특수기능의 하드웨어 모듈과 각 제품을 테스트할 수 있는 프로그램이 필요하다. 프로그램은 엔지니어에 의해 수정되고 컴파일되어 실행될 수 있어야 한다. 따라서 테스트 시스템은 쉽고 편리하게 프로그래밍할 수 있는 프로그래밍 언어와 테스트 프로그램을 컴파일하고 실행할 수 있는 컴파일러가 필요하다. 본 논문에서는 기존의 국내 테스트 시스템에서 사용하고 있는 테스트 프로그래밍 언어와 컴파일러의 환경을 서술한다. 그리고 산업현장에서 엔지니어가 좀 더 쉽고 편리하게 사용할 수 있고 향상된 성능을 가지는 프로그래밍 언어와 컴파일러를 설계 구현하였다. 본 논문에서 설계한 프로그래밍 언어와 컴파일러를 사용하여 테스트 시스템에 적용해 본 결과 기존 시스템보다 제품을 검사하는 실행 속도 면에서 성능이 향상되었다.

통합 데이터베이스 스키마 검사기의 설계와 구현 (A Design and Implementation of Integrated Database Schema Checker)

  • 김규백;유경용;김형찬
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2004년도 봄 학술발표논문집 Vol.31 No.1 (B)
    • /
    • pp.205-207
    • /
    • 2004
  • 프로젝트의 경쟁력과 성공을 위해 통합 데이터베이스 관리가 중요해지고 있다. 본 논문에서는 통합 데이터베이스 관리가 스키마 설계에서부터 이루어지도록 지원하는 새로운 스키마 검사기의 설계와 구현 내용을 소개한다. 개발된 스키마 검사기는 데이터베이스 객체의 명명 규칙 검사, 적합한 단어 필터, 유사 객체 찾기. 사용자 지정 규칙 적용의 기능을 가지고 있다. 그리고 일반적인 컴파일러의 구문 분석 과정과 다른 방법을 적용해 작업 효율을 높인 구현 세부 사항에 대해서도 상세히 설명한다. 개발된 도구는 통합 데이터베이스 관리 업무에 중요하게 현재 활용되고 있다.

  • PDF

기준 메모리를 이용한 메모리 컴파일러 특성화 방법 (Characterization Method of Memory Compiler Using Reference Memories)

  • 신우철;송혜경;정원영;조경순
    • 전자공학회논문지
    • /
    • 제51권2호
    • /
    • pp.38-45
    • /
    • 2014
  • 본 논문에서는 메모리 컴파일러를 정확하고 빠르게 특성화할 수 있도록 기준 메모리를 기반으로 특성화하는 방법을 제안하였다. 제안한 특성화 방법은 메모리 컴파일러의 정확도를 유지하면서 특성화 시간을 최소화하기 위해 메모리 컴파일러의 타이밍 경향을 분석하고 분석 결과를 토대로 기준 메모리를 선정하고, 메모리간의 경향성을 대변할 수 있도록 모델링하였다. 본 논문에서 제안한 방법론을 검증하기 위하여 130nm에서 개발된 메모리 컴파일러를 제안한 방법을 이용하여 110nm 메모리 컴파일러를 특성화하였다. 이를 통해 생성한 메모리들의 특성과 SPICE를 사용하여 특성화한 결과를 비교하여 메모리 타이밍의 평균 오차율은 ${\pm}0.1%$ 이내였으며 실제 110nm 공정을 사용하여 제작된 메모리 BIST(Built-In Self Test) 테스트 칩으로 기능 검사한 결과, 수율(Yield)이 98.8% 임을 확인하였다. 또한, 180nm 공정을 사용하여 비교한 결과, 수율이 98.3%로 그 유용성을 확인할 수 있었다.

자바 적시 컴파일에서의 조건 수행을 이용한 비어 있는 포인터의 조기검사 (Early Null Pointer Check using Predication in Java Just-In-Time Compilation)

  • 이상규;최형규;문수묵
    • 한국정보과학회논문지:소프트웨어및응용
    • /
    • 제32권7호
    • /
    • pp.683-692
    • /
    • 2005
  • 자바에서는 어떤 객체에 접근하는 작업을 할 때마다 항상 해당 객체에 대한 레퍼런스가 널 (Null)인지 여부를 먼저 검사하도록 규정하고 있다. 자바 언어는 객체 중심 언어이기 때문에 객체 접근이 빈번하며 이러한 널 포인터 검사는 자바 프로그램의 성능을 크게 저하시킬 수 있다. 이러한 성능 저하를 줄이기 위한 방법으로 불필요하게 반복되는 널 포인터 검사를 제거하는 기법이 사용되고 있다. 즉, 적시 (Just-in-Time, JIT) 컴파일러가 사용되는 자바 수행 환경에서 코드 분석을 통해 불필요한 널 포인터 검사 코드를 제거하는 최적화를 한다. 본 논문은 JIT 컴파일러 수행 환경에서 조건 수행(predication)이라는 최근 마이크로프로세서의 특징을 이용하여, 기존의 최적화로는 제거할 수 없는 널 포인터 검사 코드를 추가로 없애는 방법을 제시한다. 일반적으로 널 포인터 검사 코드는 비교와 분기 두 명령어로 이루어져 있는데, 그 중에 비교 명령어를 객체를 사용하기 전에 수행하는 것이 아니라 객체가 정의된 직후에 미리 수행하도록 함으로써 널 포인터 검사를 위해 수행되는 총 비교 명령어 수를 줄이는 것이 이 방법의 주된 내용이다. 실험 결과 기존의 널 포인터 제거로 최적화된 코드에 비해 수행된 비교 명령어의 수는 SPECjvm98에서 평균 3.21$\%$줄었고, 생성된 비교 명령어 수는 1.98$\%$ 줄었다. 이는 인텔 IA-64 아이테니엄(Itanium) 컴퓨터에서 평균 0.32$\%$의 성능 향상을 가져왔다.