KR101277145B1 - Method For Transforming Intermediate Language by Using Common Representation, System And Computer-Readable Recording Medium with Program Therefor - Google Patents
Method For Transforming Intermediate Language by Using Common Representation, System And Computer-Readable Recording Medium with Program Therefor Download PDFInfo
- Publication number
- KR101277145B1 KR101277145B1 KR1020110130293A KR20110130293A KR101277145B1 KR 101277145 B1 KR101277145 B1 KR 101277145B1 KR 1020110130293 A KR1020110130293 A KR 1020110130293A KR 20110130293 A KR20110130293 A KR 20110130293A KR 101277145 B1 KR101277145 B1 KR 101277145B1
- Authority
- KR
- South Korea
- Prior art keywords
- intermediate language
- platform
- language code
- independent
- constant
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/423—Preprocessors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
공통 표현을 이용한 중간 언어 변환 방법과 그를 위한 시스템 및 컴퓨터로 읽을 수 있는 기록매체를 개시한다.
C 언어(C-Language) 기반의 소스(Source) 파일을 생성하는 소스 파일 생성 과정; 상기 소스 파일을 중간 언어 코드로 변환하고, 상기 중간 언어 코드를 플랫폼(Platform)에 따라 컴파일(Compile)할 때 특정 타입을 갖는 상수를 공통 상수를 경유하여 상기 플랫폼에 따른 값을 갖는 상수로 변환되도록 하는 컴파일 과정; 상기 컴파일된 상기 중간 언어 코드에 대한 실행 파일을 생성하는 실행 파일 생성 과정; 및 상기 실행 파일이 상기 플랫폼에서 구동되도록 하는 실행 파일 구동 과정을 포함하는 것을 특징으로 하는 공통 표현을 이용한 중간 언어 변환 방법을 제공한다.
본 실시예에 의하면, 다양한 정보기기의 사용으로 인해 다양한 플랫폼이 이용됨에 따라 특정 플랫폼에 의존적이지 않은 독립적인 중간 언어 코드로 변환한 후 각각의 플랫폼에 해당하는 종속적인 중간 언어 코드로 변환하는 데 이때, C 언어 기반의 특정 타입을 갖는 상수가 독립적인 중간 언어 코드 상에 공통 상수로 표현되도록 하며, 공통 상수가 종속적인 중간 언어 코드 상에 각 플랫폼에 따른 상수로 표현되도록 하는 효과가 있다.Disclosed are an intermediate language conversion method using a common expression, a system for the same, and a computer-readable recording medium.
A source file generation process of generating a C-Language-based source file; Converting the source file into an intermediate language code and converting the constant language having a specific type into a constant having a value according to the platform via a common constant when compiling the intermediate language code according to a platform. The compilation process; An executable file generation step of generating an executable file for the compiled intermediate language code; And an executable file driving process for allowing the executable file to be run on the platform.
According to the present embodiment, as a variety of platforms are used due to the use of various information devices, converting into independent intermediate language codes that are not dependent on a specific platform, and then converting into independent intermediate language codes corresponding to each platform. As a result, constants having a specific type based on C language can be expressed as common constants on independent intermediate language codes, and common constants can be expressed as constants for each platform on dependent intermediate language codes.
Description
본 실시예는 공통 표현을 이용한 중간 언어 변환 방법과 그를 위한 시스템 및 컴퓨터로 읽을 수 있는 기록매체에 관한 것이다. 더욱 상세하게는, 다양한 정보기기의 사용으로 인해 다양한 플랫폼이 이용됨에 따라 특정 플랫폼에 의존적이지 않은 독립적인 중간 언어 코드로 변환한 후 각각의 플랫폼에 해당하는 종속적인 중간 언어 코드로 변환하는 데 이때, C 언어 기반의 특정 타입을 갖는 상수가 독립적인 중간 언어 코드 상에 공통 상수로 표현되도록 하며, 공통 상수가 종속적인 중간 언어 코드 상에 각 플랫폼에 따른 상수로 표현되도록 하는 공통 표현을 이용한 중간 언어 변환 방법과 그를 위한 시스템 및 컴퓨터로 읽을 수 있는 기록매체에 관한 것이다.The present embodiment relates to an intermediate language conversion method using a common expression, a system therefor, and a computer-readable recording medium. In more detail, as various platforms are used due to the use of various information devices, they are converted to independent intermediate language codes that are not dependent on a specific platform, and then to dependent intermediate language codes corresponding to each platform. Intermediate language conversion using common expressions that allow constants with specific types based on C language to be expressed as common constants on independent intermediate language codes, and common constants to be represented as constants for each platform on dependent intermediate language codes. A method, a system therefor, and a computer readable recording medium.
이 부분에 기술된 내용은 단순히 본 실시예에 대한 배경 정보를 제공할 뿐 종래기술을 구성하는 것은 아니다.The contents described in this section merely provide background information on the present embodiment and do not constitute the prior art.
프로그램은 프로그래밍 언어로 기입된다. 프로그래밍 언어는 컴퓨터에 의해 처리 및 실행될 수 있는 명령의 시퀀스를 정의하는데 사용될 수 있는 임의의 인공 언어이다. 그러나, 프로그래밍 언어는 프로그래밍 언어를 사용하여 표현된 소스 코드로부터 컴퓨터 또는 데이터-처리 시스템이 작업하는데 필요한 기계 코드로의, 컴파일러와 같은 또 다른 프로그램에 의한 번역(Translate) 절차를 필요로 하는 것으로 의미한다.The program is written in a programming language. A programming language is any artificial language that can be used to define a sequence of instructions that can be processed and executed by a computer. However, a programming language is meant to require a translation procedure by another program, such as a compiler, from the source code expressed using a programming language to the machine code necessary for the computer or data-processing system to work .
이러한, 프로그래밍 언어는 전형적으로 3가지의 서로 다른 개념의 부류: 저-레벨 언어, 고-레벨 언어, 또는 중간-레벨 언어 중 하나에 속하는 것으로서 간주된다. 일반적인 저-레벨 프로그래밍 언어의 예로는 어셈블리 언어가 있으며, 고-레벨 프로그래밍 언어는 코볼(COBOL), 포트란(FORTRAN), 파스칼(Pascal)이 있으며, 중간 레벨 프로그래밍 언어로는 C 언어 및 C++ 언어가 있다.Such programming languages are typically considered to belong to one of three different classes of concepts: low-level languages, high-level languages, or mid-level languages. Examples of common low-level programming languages include assembly language, and high-level programming languages include COBOL, FORTRAN, Pascal, and intermediate level programming languages include C and C ++ languages. .
C 언어는 기술된 중간 레벨 특징을 갖는, 고레벨 언어보다 더 기계-독립형인 어셈블리 언어인 것으로 많은 사람이 생각하는 프로그래밍 언어이다. C++ 언어는 기술된 중간 레벨 특징을 또한 포함하는 C 프로그래밍 언어의 객체-지향 버전이다. 여기서, 'C 언어'는 C 언어 및 그의 C++ 언어의 구현 모두를 지칭한다. C 언어는 중간 레벨 프로그래밍 언어와 관련된 가능한 논리적 실수, 특유의 위험, 및 비효율성의 구체적인 예를 보여주는데 이용될 수 있다.The C language is a programming language that many people think of as an assembly language that is more machine-independent than a high-level language with the described intermediate level features. The C ++ language is an object-oriented version of the C programming language that also includes the intermediate level features described. Here, 'C language' refers to both the C language and its implementation of the C ++ language. The C language can be used to show specific examples of possible logical mistakes, inherent risks, and inefficiencies associated with mid-level programming languages.
이러한, 종래의 C 언어 또는 C++ 언어 등의 프로그래밍 언어(Programming Language)로 작성된 애플리케이션(Application)들은, 애플리케이션이 사용될 플랫폼(Platform)에 맞게 중간 언어나 실행파일의 형태로 변환될 수 있는데, 최근들어 다양한 정보기기의 사용에 따른 다양한 플랫폼이 이용됨에 따라 각각의 플랫폼에 따라 특정 플랫폼에 의존적이지 않은 독립적인 중간 언어나 실행파일의 형태로 변환하는 기술이 필요한 실정이다.Applications written in a programming language such as a conventional C language or a C ++ language may be converted into an intermediate language or an executable file according to a platform in which the application is to be used. As various platforms are used according to the use of information devices, technology for converting them into an independent intermediate language or executable file that is not dependent on a specific platform for each platform is needed.
전술한 문제점을 해결하기 위해 본 실시예는, 다양한 정보기기의 사용으로 인해 다양한 플랫폼이 이용됨에 따라 특정 플랫폼에 의존적이지 않은 독립적인 중간 언어 코드로 변환한 후 각각의 플랫폼에 해당하는 종속적인 중간 언어 코드로 변환하는 공통 표현을 이용한 중간 언어 변환 방법과 그를 위한 시스템 및 컴퓨터로 읽을 수 있는 기록매체를 제공하는 데 주된 목적이 있다.In order to solve the above-mentioned problems, the present embodiment converts into independent intermediate language codes that are not dependent on a specific platform as various platforms are used due to the use of various information devices, and then the dependent intermediate languages corresponding to each platform. It is a main object to provide an intermediate language conversion method using a common expression for converting to code, and a system and a computer-readable recording medium therefor.
전술한 목적을 달성하기 위해 본 실시예의 일 측면에 의하면, C 언어(C-Language) 기반의 소스(Source) 파일을 생성하는 소스 파일 생성 과정; 상기 소스 파일을 중간 언어 코드로 변환하고, 상기 중간 언어 코드를 플랫폼(Platform)에 따라 컴파일(Compile)할 때 특정 타입을 갖는 상수를 공통 상수를 경유하여 상기 플랫폼에 따른 값을 갖는 상수로 변환되도록 하는 컴파일 과정; 상기 컴파일된 상기 중간 언어 코드에 대한 실행 파일을 생성하는 실행 파일 생성 과정; 및 상기 실행 파일이 상기 플랫폼에서 구동되도록 하는 실행 파일 구동 과정을 포함하는 것을 특징으로 하는 공통 표현을 이용한 중간 언어 변환 방법을 제공한다.According to an aspect of the present embodiment to achieve the above object, a source file generation process for generating a C-Language based source file; Converting the source file into an intermediate language code and converting the constant language having a specific type into a constant having a value according to the platform via a common constant when compiling the intermediate language code according to a platform. The compilation process; An executable file generation step of generating an executable file for the compiled intermediate language code; And an executable file driving process for allowing the executable file to be run on the platform.
또한, 본 실시에의 다른 측면에 의하면, C 언어 기반의 소스 파일을 생성하는 소스 파일 생성부; 상기 소스 파일을 중간 언어 코드로 변환하고, 상기 중간 언어 코드를 플랫폼에 따라 컴파일할 때 특정 타입을 갖는 상수를 공통 상수를 경유하여 상기 플랫폼에 따른 값을 갖는 상수로 변환되도록 하는 컴파일부; 상기 컴파일된 상기 중간 언어 코드에 대한 실행 파일을 생성하는 실행 파일 생성부; 및 상기 실행 파일이 상기 플랫폼에서 구동되도록 하는 실행 파일 구동부를 포함하는 것을 특징으로 하는 중간 언어 변환 시스템을 제공한다.In addition, according to another aspect of the present embodiment, a source file generation unit for generating a C language-based source file; A compiling unit for converting the source file into an intermediate language code and converting a constant having a specific type into a constant having a value corresponding to the platform via a common constant when compiling the intermediate language code according to a platform; An executable file generator which generates an executable file for the compiled intermediate language code; And an executable file driver for allowing the executable file to be driven on the platform.
또한, 본 실시에의 다른 측면에 의하면, 데이터 처리 기기에, C 언어(C-Language) 기반의 소스(Source) 파일을 생성하는 소스 파일 생성 과정; 상기 소스 파일을 중간 언어 코드로 변환하고, 상기 중간 언어 코드를 플랫폼(Platform)에 따라 컴파일(Compile)할 때 특정 타입을 갖는 상수를 공통 상수를 경유하여 상기 플랫폼에 따른 값을 갖는 상수로 변환되도록 하는 컴파일 과정; 상기 컴파일된 상기 중간 언어 코드에 대한 실행 파일을 생성하는 실행 파일 생성 과정; 및 상기 실행 파일이 상기 플랫폼에서 구동되도록 하는 실행 파일 구동 과정을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공한다.In addition, according to another aspect of the present embodiment, a source file generation process for generating a C-Language-based source file in the data processing device; Converting the source file into an intermediate language code and converting the constant language having a specific type into a constant having a value according to the platform via a common constant when compiling the intermediate language code according to a platform. The compilation process; An executable file generation step of generating an executable file for the compiled intermediate language code; And a computer readable recording medium having recorded thereon a program for realizing an executable file driving process for allowing the executable file to be run on the platform.
이상에서 설명한 바와 같이 본 실시예에 의하면, 다양한 정보기기의 사용으로 인해 다양한 플랫폼이 이용됨에 따라 특정 플랫폼에 의존적이지 않은 독립적인 중간 언어 코드로 변환한 후 각각의 플랫폼에 해당하는 종속적인 중간 언어 코드로 변환하는 데 이때, C 언어 기반의 특정 타입을 갖는 상수가 독립적인 중간 언어 코드 상에 공통 상수로 표현되도록 하며, 공통 상수가 종속적인 중간 언어 코드 상에 각 플랫폼에 따른 상수로 표현되도록 하는 효과가 있다.As described above, according to the present embodiment, as various platforms are used due to the use of various information devices, the intermediate language codes corresponding to each platform are converted into independent intermediate language codes that are not dependent on a specific platform. In this case, a constant having a specific type based on C language is expressed as a common constant on an independent intermediate language code, and a common constant is expressed as a constant for each platform on a dependent intermediate language code. There is.
또한, 본 실시예에 의하면, 플랫폼에 따라 값을 가지는 C 언어 기반의 특정 타입(type())을 갖는 상수를 공통 상수로 독립적인 중간 언어 코드로 표현 가능하게 함으로써, 독립적인 중간 코드의 이식성(Portability)을 향상시킬 수 있는 효과가 있다.In addition, according to the present embodiment, the portability of the independent intermediate code can be expressed by allowing a constant having a specific type (type ()) based on the C language having a value according to the platform to be expressed as an independent intermediate language code as a common constant. It has the effect of improving portability.
도 1은 본 실시예에 따른 중간 언어 변환 시스템을 개략적으로 나타낸 블럭 구성도,
도 2는 제 1 실시예에 따른 중간 언어 변환 시스템을 개략적으로 나타낸 블럭 구성도,
도 3은 제 2 실시예에 따른 중간 언어 변환 시스템을 개략적으로 나타낸 블럭 구성도,
도 4는 제 3 실시예에 따른 중간 언어 변환 시스템을 개략적으로 나타낸 블럭 구성도,
도 5는 제 4 실시예에 따른 중간 언어 변환 시스템을 개략적으로 나타낸 블럭 구성도,
도 6은 본 실시예에 따른 중간 언어 변환 방법을 설명하기 위한 순서도,
도 7은 본 실시예에 따른 중간 언어 변환 과정을 설명하기 위한 예시도이다.1 is a block diagram schematically illustrating an intermediate language conversion system according to an embodiment of the present invention;
2 is a block diagram schematically illustrating an intermediate language conversion system according to a first embodiment;
3 is a block diagram schematically illustrating an intermediate language conversion system according to a second embodiment;
4 is a block diagram schematically illustrating an intermediate language conversion system according to a third embodiment;
5 is a block diagram schematically illustrating an intermediate language conversion system according to a fourth embodiment;
6 is a flowchart illustrating an intermediate language conversion method according to the present embodiment;
7 is an exemplary diagram for describing an intermediate language conversion process according to the present embodiment.
이하, 본 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.Hereinafter, the present embodiment will be described in detail with reference to the accompanying drawings.
도 1은 본 실시예에 따른 중간 언어 변환 시스템을 개략적으로 나타낸 블럭 구성도이다.1 is a block diagram schematically showing an intermediate language conversion system according to the present embodiment.
본 실시예에 따른 중간 언어 변환 시스템은 개발자 단말기(110), 중간 언어 변환 장치(120) 및 플랫폼(130)을 포함한다. 본 실시예에서는 중간 언어 변환 시스템이 개발자 단말기(110), 중간 언어 변환 장치(120) 및 플랫폼(130)만을 포함하는 것으로 기재하고 있으나, 이는 본 발명의 일 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명의 일 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 일 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 중간 언어 변환 시스템에 포함되는 구성 요소에 대하여 다양하게 수정 및 변형하여 적용 가능할 것이다.The intermediate language conversion system according to the present embodiment includes a
한편, 도 1에서의 전반적인 흐름을 설명하자면, 개발자 단말기(110)는 탑재된 개발자 툴을 이용하여 C 언어 기반의 소스 파일을 생성하며, 중간 언어 변환 장치(120)는 탑재된 컴파일러를 이용하여 소스 파일을 컴파일(Compile)하여 중간 언어 코드로 변환한 후 링커(Linker) 프로그램으로 중간 언어 코드를 연결시켜 실행 파일을 만든 후 만들어진 실행 파일이 플랫폼(130)에서 실행된다.Meanwhile, to describe the overall flow in FIG. 1, the
한편, 도 1에서의 제 2 실시예에 따른 전반적인 흐름을 설명하자면, 개발자 단말기(110)는 개발자의 조작 또는 명령에 의해 작성된 C 언어 소스 코드를 읽어 들이고 전처리 과정을 수행한 후 플랫폼의 독립적인 중간 언어 코드를 생성한다. 이에, 중간 언어 변환 장치(120)는 개발자 단말기(110)로부터 생성된 플랫폼 독립적인 중간 언어 코드를 읽어 들이고 이를 특정 플랫폼에 맞게 플랫폼 종속적인 중간 언어 코드로 변환한다. 또한, 중간 언어 변환 장치(120)는 플랫폼의 종속적인 중간 언어 코드를 플랫폼(130)에 맞는 실행 파일로 변환한다. 이에, 각 플랫폼(130)은 중간 언어 변환 장치(120)로부터 실행파일을 전송받아 구동한다.Meanwhile, to describe the overall flow according to the second embodiment of FIG. 1, the
한편, 도 1에서의 제 3 실시예에 따른 전반적인 흐름을 설명하자면, 개발자 단말기(110)는 개발자의 조작 또는 명령에 의해 작성된 C 언어 소스 코드를 읽어 들이고 전처리 과정을 수행한 후 플랫폼의 독립적인 중간 언어 코드를 생성한다. 이에, 중간 언어 변환 장치(120)는 개발자 단말기(110)로부터 생성된 플랫폼 독립적인 중간 언어 코드를 읽어 들이고 이를 특정 플랫폼에 맞게 플랫폼 독립적인 중간 언어 코드로 변환한다. 이에, 각 플랫폼(130)은 중간 언어 변환 장치(120)로부터 플랫폼의 종속적인 중간 언어 코드를 전송받고 이를 플랫폼(130)에 맞게 실행파일로 변환 후 구동한다.Meanwhile, to describe the overall flow according to the third embodiment of FIG. 1, the
한편, 도 1에서의 제 4 실시예에 따른 전반적인 흐름을 설명하자면, 개발자 단말기(110)는 개발자의 조작 또는 명령에 의해 작성된 C 언어 소스 코드를 읽어 들이고 전처리 과정을 수행한 후 플랫폼의 독립적인 중간 언어 코드를 생성한다. 또한, 개발자 단말기(110)는 이를 특정 플랫폼에 맞게 플랫폼의 독립적인 중간 언어 코드로 변환한 후 플랫폼에 맞게 실행파일로 변환한다. 이에, 각 플랫폼(130)은 개발자 단말기(110)로부터 실행파일을 전송받아 구동한다.Meanwhile, to describe the overall flow according to the fourth embodiment of FIG. 1, the
이하에서 개발자 단말기(110), 중간 언어 변환 장치(120) 및 플랫폼(130)에 대해 각각 설명하도록 한다.Hereinafter, the
개발자 단말기(110)는 태블릿 PC(Tablet PC), 랩톱(Laptop), 개인용 컴퓨터(PC: Personal Computer), 스마트폰(Smart Phone), 개인휴대용 정보단말기(PDA: Personal Digital Assistant) 및 이동통신 단말기(Mobile Communication Terminal) 등 중 어느 하나일 수 있으며, 사용자의 조작 또는 명령에 의해 C 언어 기반의 소스 파일을 생성할 수 있으며, 사용자의 키 조작에 따라 통신망을 경유하여 각종 데이터를 송수신할 수 있는 단말기를 말한다.The
즉, 개발자 단말기(110)는 C 언어 기반의 소스 파일을 생성할 수 있는 프로그램(예컨대, 개발자 툴) 또는 프로토콜을 저장하기 위한 메모리, 해당 프로그램을 실행하여 연산 및 제어하기 위한 마이크로프로세서 등을 구비하고 있는 단말기를 의미한다. 또한, 개발자 단말기(110) 중간 언어 변환 장치(120)와 통신할 수 있는 단말기이며, 중간 언어 변환 장치(120)와 서버-클라이언트 통신이 가능하다면 그 어떠한 단말기도 가능하다. 한편, 개발자 단말기(110)는 통신망을 통하여 C 언어 기반의 소스 파일을 생성할 수 있는 클라우드 컴퓨팅(Cloud Computing)을 지원하는 클라우드 컴퓨팅 단말기가 될 수 있다.That is, the
본 실시예에 기재된 'C 언어'란 프로그램을 만드는 프로그램으로서, 타 기종간의 이식성이 높고 고정적인 형식이 없으며, 퀵 베이직처럼 퀵C, 터보C 등의 처리계가 있다. 또한, 오브젝트 지향적인 요소가 첨가된 C++이 개발되었으며, 시스템의 저급 부분을 제어할 수 있어 사용하기 쉽고 능률적인 프로그램을 작성할 수 있는 프로그래밍 언어이다.The "C language" described in the present embodiment is a program for making a program. The portability between the other models is high and there is no fixed format, and there are processing systems such as Quick C and Turbo C like Quick Basic. In addition, C ++ has been developed with the addition of object-oriented elements, and it is a programming language that allows you to write programs that are easy to use and streamlined because you can control the lower parts of the system.
개발자 단말기(110)는 사용자의 조작 또는 명령에 의해 개발자 툴을 구동하며, 개발자 툴을 통해 C 언어 기반의 소스 파일을 생성할 수 있다. 한편, 도 1에서는 개발자 단말기(110), 중간 언어 변환 장치(120) 및 플랫폼(130)이 각각 별도의 장치로 구현된 것으로 기재하고 있으나, 실제 실시예의 구현에 있어서, 개발자 단말기(110), 중간 언어 변환 장치(120) 및 플랫폼(130)을 모두 포함하는 형태의 자립형(Stand Alone) 장치로 구현될 수 있을 것이다.The
이러한, 개발자 단말기(110)는 애플리케이션 개발자 측의 플랫폼으로서, 개발자 단말기(110)에서 개발자 툴을 이용하여 소스 코드(Source Code)의 형태의 소스 파일을 생성할 수 있다. 여기서, 'C 언어 기반의 프로그래밍 언어'란 C 언어 자체, C 언어를 확장한 객체 지향형 언어인 C++언어, C 프로그래밍 언어에 스몰토크(Smalltalk) 스타일의 메시지 구문을 추가한 객체 지향형 언어인 오브젝티브-C(Objective-C) 언어, 또는 C/C++언어에 기반하여 이를 수정 또는 변형하여 구성되는 임의의 프로그래밍 언어를 지칭한다.The
또한, 본 실시예에 기재된 '중간 언어 코드'란 플랫폼(130)의 CPU 종류(예컨대, x86, x64, ARM 등) 또는 운영체제의 종류(예컨대, 윈도우(Windows), 리눅스(Linux), OSX, iOS, 안드로이드(Android), 윈도우 모바일, 윈도우 폰 등)와 같은 플랫폼의 특성에 의존하지 않으며, 플랫폼에 대해 독립적인 형태의 코드를 의미한다. 즉, 중간 언어 코드는 중간 언어 변환 장치(120)에 의해 추후 컴파일 시에 특정 플랫폼에 대응되는 바이너리(Binary) 코드로 변환하여 실행하는 것이 가능하다. 예를 들어, 중간 언어 코드는 소정 규격의 가상 머신(Virtual Machine)에 의하여 실행될 수 있다.In addition, the "intermediate language code" described in this embodiment means a CPU type (eg, x86, x64, ARM, etc.) or a type of operating system (eg, Windows, Linux, OSX, iOS) of the
제 1 실시예에 따른 개발자 단말기(110)는 개발자의 조작 또는 명령에 의해 작성된 C 언어 소스 코드를 중간 언어 변환 장치(120)로 전송한다. 한편, 제 2 실시예에 따른 개발자 단말기(110)는 개발자의 조작 또는 명령에 의해 작성된 C 언어 소스 코드를 읽어 들이고 전처리 과정을 수행한 후 플랫폼의 독립적인 중간 언어 코드를 생성한다. The
제 3 실시예에 따른 개발자 단말기(110)는 개발자의 조작 또는 명령에 의해 작성된 C 언어 소스 코드를 읽어 들이고 전처리 과정을 수행한 후 플랫폼의 독립적인 중간 언어 코드를 생성한다. 한편, 제 4 실시예에 따른 개발자 단말기(110)는 개발자의 조작 또는 명령에 의해 작성된 C 언어 소스 코드를 읽어 들이고 전처리 과정을 수행한 후 플랫폼의 독립적인 중간 언어 코드를 생성한다. 또한, 제 4 실시예에 따른 개발자 단말기(110)는 이를 특정 플랫폼에 맞게 플랫폼의 독립적인 중간 언어 코드로 변환한 후 플랫폼에 맞게 실행파일로 변환한다. The
한편, 제 1 실시예에 따른 중간 언어 변환 장치(120)는 C 언어 기반의 프로그래밍 언어와 플랫폼의 독립적인 중간 언어 사이의 변환 규칙이 정의되어 있는 매핑 정보를 저장할 수 있다. 예를 들어, 제 1 실시예에 따른 중간 언어 변환 장치(120)는 C 언어의 각 지시자를 이에 대응되는 중간 언어 코드와 매칭시킨 테이블(Table)의 형태의 매핑 정보를 저장할 수 있다. 즉, 중간 언어 변환 장치(120)는 이러한 매핑 정보를 이용하여, C 언어 기반의 소스 파일을 중간 언어 코드로 변환할 수 있다.Meanwhile, the intermediate
예를 들어, C 언어에서 사용하는 "int" 라는 타입(Type) 지시자는 16비트(Bit) 머신 플랫폼에서는 16비트 크기를 의미하는 반면 32 비트 머신 플랫폼에서는 32 비트 크기를 의미한다. 이러한 이유 때문에 C 언어를 이용하여 애플리케이션을 작성하는 경우 애플리케이션이 사용될 플랫폼의 사양에 맞추어 "int" 지시자를 사용해야 한다. 또한, C 언어에서 사용하는 "long double" 이라는 타입(Type) 지시자는 각 아키텍쳐 별로 다른 인코딩 방법을 가지고 있다. 이러한 이유로 인해 C 언어를 이용하여 애플리케이션을 작성하는 경우 애플리케이션이 사용될 플랫폼의 사양에 맞추어 "long double" 지시자를 사용해야 한다. 본 실시예들에서는 C 언어의 "int", "long double" 같은 지시자들이 이에 대응되는 중간 언어 코드로 변환되어 배포되며, 추후 중간 언어 코드의 컴파일시에 플랫폼이 16비트 머신인지 또는 32비트 머신인지 또는 어떤 "long double" 인코딩 방법을 사용하는지에 따라 중간 언어 코드를 적절한 비트 크기 및 적절한 인코딩 방법을 의미하는 바이너리 코드로 컴파일할 수 있다.For example, the type indicator "int" used in the C language means 16 bits on 16-bit machine platforms, and 32 bits on 32-bit machine platforms. For this reason, when writing an application using the C language, you must use the "int" directive in accordance with the specifications of the platform on which the application will be used. In addition, the type indicator "long double" used in C language has a different encoding method for each architecture. For this reason, when writing an application using the C language, you must use the "long double" directive in accordance with the specifications of the platform on which the application will be used. In the present embodiments, indicators such as "int" and "long double" of the C language are converted into corresponding intermediate language codes and distributed, and when the intermediate language code is compiled, the platform is a 16-bit machine or a 32-bit machine. Alternatively, depending on which "long double" encoding method is used, the intermediate language code can be compiled into binary code, which means the appropriate bit size and the appropriate encoding method.
한편, 제 1 실시예에 따른 중간 언어 변환 장치(120)는 개발자 단말기(110)로부터 소스 파일을 수신(예컨대, 통신망 등을 이용하여)할 수 있으며, 플랫폼(130)과도 통신(예컨대, 통신망 등을 이용하여)할 수 있다. 이때, 개발자 단말기(110), 중간 언어 변환 장치(120) 및 플랫폼(130) 간에 통신 방식은 특정 방식으로 한정되지 않으며, 플랫폼(130)은 동일한 처리장치 또는 동일한 운영체제를 사용할 수도 있으나, 서로 상이한 처리장치 또는 운영체제를 사용할 수도 있다. 예를 들어, 중간 언어 변환 장치(120)가 자동으로 또는 플랫폼(130)의 다운로드(Download) 요청에 의해 하나의 플랫폼(130)에 애플리케이션을 전송하고자 하는 경우, 중간 언어 변환 장치(120)는 중간 언어 코드로 된 애플리케이션을 해당 플랫폼(130)에 대응되는 형태의 바이너리 코드로 변환할 수 있다. 이때, 변환된 바이너리 코드는 플랫폼(130)에서 실행 가능한 실행파일의 형태일 수 있다. 예컨대 플랫폼(130)이 윈도우(Windows) 운영체제를 이용하는 경우 바이너리 코드는 "exe" 확장자를 갖는 실행 파일일 수 있다. Meanwhile, the intermediate
또한, 제 1 실시예에 따른 중간 언어 변환 장치(120)는 중간 언어 코드를 다양한 형태의 실행 파일로 생성하기 위한 중간 언어 해석부를 포함할 수 있다. 이러한, 중간 언어 해석부는 플랫폼(130)의 독립적인 중간 언어 코드를 컴파일하여 각 플랫폼에 대해 최적화된 형태의 바이너리 코드로 변환할 수 있다. 이를 위하여, 중간 언어 해석부는 중간 언어 코드를 공지된 플랫폼의 유형별 바이너리 코드로 변환하기 위한 수단을 포함할 수 있다. 예컨대 가상머신 컴파일러(VM Compiler) 등이 이에 해당될 수 있다.In addition, the intermediate
한편, 제 1 실시예에 따른 중간 언어 변환 장치(120)는 중간 언어 변환 장치(120)에 접속한 플랫폼(130)의 프로파일(Profile)(예컨대, CPU 또는 운영 체제의 종류 등)이 전송된다. 따라서, 중간 언어 변환 장치(120)는 실행 파일을 전송할 해당 플랫폼(130)의 프로파일을 이용하여 코드 사이즈 최적화 및 변수 처리 등을 수행함으로써, 중간 언어 코드를 플랫폼(130)에 최적화된 바이너리 코드(예컨대, 실행파일)로 변환할 수 있다.Meanwhile, the intermediate
제 1 실시예에 따른 중간 언어 변환 장치(120)는 C 언어 기반의 소스 파일을 생성하거나, 개발자 단말기(110)로부터 C 언어 기반의 소스 파일을 수신한다. 소스 파일에 대한 전처리를 수행하며, 전처리가 수행된 소스 파일을 중간 언어 코드로 변환하고, 중간 언어 코드를 플랫폼(130)에 따라 컴파일할 때 특정 타입을 갖는 상수를 공통 상수를 경유하여 플랫폼(130)에 따른 값을 갖는 상수로 변환되도록 하며, 컴파일된 중간 언어 코드에 대한 실행 파일을 생성하며, 실행 파일이 플랫폼(130)에서 구동되도록 한다. 여기서, 본 실시예에 따른 '공통 상수'란 각각의 플랫폼에 따라 다른 값을 갖는 변수에 대한 초기화 값으로 이용되는 상수를 어떠한 플랫폼으로 변환 가능하도록 공통적인 표현법으로 표현한 상수를 일컫는다. 예컨대, 제 1 플랫폼이 x86-32bit를 지원하고, 제 2 플랫폼이 x86-64bit 또는 x64-64bit를 지원할 때 '공통 상수'는 제 1 플랫폼과 제 2 플랫폼으로 모두 변환 가능한 포맷(Format)을 갖는다.The intermediate
제 1 실시예에 따른 중간 언어 변환 장치(120)에서의 전처리 과정에 대해 설명하자면, 제 1 실시예에 따른 중간 언어 변환 장치(120)는 소스 파일에 대한 전처리를 수행할 수 있는데, '전처리'란 컴파일 이전에 특정한 부분을 치환하는 작업을 의미한다. 예컨대, '#'으로 정의된 라인을 전처리 구문이라 하며, 전처리 구문 끝에는 명령의 끝을 의미하는 세미콜론(;)을 붙이지 않는다. Referring to the preprocessing process in the intermediate
한편, 라이브러리는 소프트웨어를 만들 때 쓰이는 클래스나 서브루틴들의 모임으로서, 누구나 가져다 쓸 수 있도록 만들어져 있는 기본적으로 제공되는 함수를 포함한다. 이러한, 라이브러리는 '정적 라이브러리'와 '동적 라이브러리'를 포함하는데, 정적 라이브러리는 컴파일러가 소스 파일을 컴파일할 때 참조되는 프로그램 모듈이다. 즉, 정적 라이브러리(Statically-Linked Library)는 루틴(Routine) 외부 함수와 변수들의 집합으로, 컴파일러, 링커, 바인더 등에 의해 목표된 애플리케이션으로 복사되어 오브젝트 파일과 독립적으로 실행할 수 있는 실행 파일을 생성하는데 사용된다. 예컨대, 윈도우의 '.LIB' 파일과 같이 '.a'의 확장자를 갖고 있다. 한편, 동적 라이브러리는 프로그램 수행 도중 해당 모듈이 필요할 때 불러오는 프로그램 모듈이다. 즉, 윈도우에서는 주로 'DLL' 확장자를 가지며, 리눅스에서는 주로 'SO' 확장자를 가진다. Libraries, on the other hand, are a collection of classes or subroutines used to make software, and include built-in functions that are intended for anyone to use. These libraries include 'static libraries' and 'dynamic libraries', which are program modules that are referenced when the compiler compiles source files. In other words, a statically-linked library is a set of routine external functions and variables that can be copied to a target application by a compiler, linker, binder, etc. and used to create an executable file that can be run independently of the object file. do. For example, it has an extension of '.a' like a Windows '.LIB' file. On the other hand, a dynamic library is a program module that is loaded when a corresponding module is needed during program execution. That is, on Windows, it usually has a 'DLL' extension, and on Linux it has a 'SO' extension.
제 1 실시예에 따른 중간 언어 변환 장치(120)에서의 컴파일 과정에 대해 설명하자면, 중간 언어 변환 장치(120)는 전처리가 수행된 소스 파일을 플랫폼(130)의 독립적인 중간 언어 코드로 컴파일하는 독립적 컴파일 과정을 거치고, 독립적인 중간 언어 코드를 플랫폼(130)의 종속적인 중간 언어 코드로 컴파일하는 종속적 컴파일 과정을 거친다.Referring to the compilation process in the intermediate
본 실시예에 기재된, '컴파일'이란 사람이 이해할 수 있는 컴퓨터언어를 기계가 이해할 수 있는 기계어로 통역해주는 과정을 말한다. 일반적으로 컴퓨터언어 프로그램이라 부르는 터보C, 볼랜드C++, 비주얼베이직 등이 컴파일러 프로그램으로, 컴퓨터언어 프로그램을 이용해서 컴퓨터 프로그램을 만든다. 이러한, 컴파일 과정은 '컴파일러'를 이용하여 수행할 수 있는데, 컴파일러는 소스 파일을 기계어로 번역해주는 프로그램을 말한다. 이러한, C 언어 컴파일러는 C 언어 문법에 맞추어서 쓴 명령어들을 컴퓨터가 이해할 수 있는 기계어로 번역해주는 프로그램이다. 즉, 컴파일러는 사람들이 알아볼 수 있도록 숫자와 문자로 명령을 기록한 내용을 기계가 이해할 수 있는 언어인 기계어로 번역해준다.The term 'compile' described in this embodiment refers to a process of interpreting a computer language that can be understood by a person and a machine language that can be understood by a machine. Turbo C, Borland C ++, and Visual Basic, which are generally called computer language programs, are compiler programs that make computer programs using computer language programs. This compilation process can be performed using a 'compiler', which is a program that translates source files into machine language. The C language compiler is a program that translates instructions written according to the C language syntax into machine language that can be understood by a computer. In other words, the compiler translates what is written in numbers and letters into machine language, a language that the machine can understand so that people can recognize it.
이때, 제 1 실시예에 따른 중간 언어 변환 장치(120)는 독립적 컴파일 과정을 수행하기 위해 특정 타입을 갖는 소스 파일을 중간 언어 코드로 변환한 후 중간 언어 코드를 플랫폼(130)의 독립적인 중간 언어 코드로 컴파일할 때 특정 타입을 갖는 상수를 공통 상수로 변환한다. 또한, 제 1 실시예에 따른 중간 언어 변환 장치(120)는 종속적 컴파일 과정을 수행하기 위해 독립적인 중간 언어 코드를 플랫폼의 종속적인 중간 언어 코드로 컴파일할 때 독립적인 중간 언어 코드에 포함된 공통 상수를 플랫폼(130)에 따른 값을 갖는 상수로 변환한다. 여기서, '상수'는 한번 값을 저장하면 변경이 불가능한 값을 말하며, 변수와 마찬가지로 상수도 값을 저장할 수 있는 메모리 공간을 가지나, 변수와 다르게 데이터의 변경은 불가능하다. 한편, 중간 언어 변환 장치(120)는 종속적인 컴파일 과정을 수행할 때 독립적인 중간 언어 코드를 종속적인 중간 언어 코드로 컴파일할 때 문법 오류 체크를 수행하며, 확인 결과, 문법 오류 체크에 오류가 없는 경우 실행 파일 생성 과정에서 실행 파일을 생성한다. 이때, 특정 타입이란 'type ()'를 말하며, 'type ()'란 인수의 형을 지정하는 일종의 지시자를 말한다.In this case, the intermediate
한편, 제 1 실시예에 따른 중간 언어 변환 장치(120)가 적용될 여지가 많다고 여겨지는 분야에 대해 설명하자면, 중간 언어 변환 장치(120)는 일종에 '애플리케이션 스토어'에 적용될 수 있다. 즉, 중간 언어 변환 장치(120)가 적용된 애플리케이션 스토어는 개발자 단말기(110)로부터 소스 파일만을 수신한 후 이를 중간 언어 코드로 변환하고, 해당 애플리케이션 스토어에 접속한 플랫폼(130)에 해당하는 형태로 컴파일한 후 해당 플랫폼(130)으로 해당 애플리케이션을 전송하여 수익을 창출할 수 있을 것이다.Meanwhile, to describe a field in which the intermediate
한편, 제 2 실시예에 따른 중간 언어 변환 장치(120)는 개발자 단말기(110)로부터 생성된 플랫폼 독립적인 중간 언어 코드를 읽어 들이고 이를 특정 플랫폼에 맞게 플랫폼 종속적인 중간 언어 코드로 변환한다. 또한, 중간 언어 변환 장치(120)는 플랫폼의 종속적인 중간 언어 코드를 플랫폼(130)에 맞는 실행 파일로 변환한다. 한편, 제 3 실시예에 따른 중간 언어 변환 장치(120)는 개발자 단말기(110)로부터 생성된 플랫폼 독립적인 중간 언어 코드를 읽어 들이고 이를 특정 플랫폼에 맞게 플랫폼 독립적인 중간 언어 코드로 변환한다.Meanwhile, the intermediate
플랫폼(130)은 중앙처리장치의 아키텍쳐(Architecture) 및 운영체제(Operating System; OS) 중 적어도 하나 이상이 조합된 장치를 말한다. 즉, 중앙처리장치의 아키텍처는 ARM의 ARMv5, ARMv7, ARMv8, X86 또는 X64 등이 될 수 있으며, 운영체제는 윈도우, 리눅스, 윈도우 모바일, 안드로이드, OSX 또는 iOS 등이 될 수 있으나 반드시 이에 한정되는 것은 아니다. 이러한, 플랫폼(130)이란 하나 또는 복수 개의 처리장치(예컨대, CPU 등)를 포함하는 하드웨어, 하드웨어를 이용하여 동작하는 운영체제(Operating System; OS), 또는 하드웨어 및 운영체제 모두를 지칭한다. 예컨대 플랫폼(130)은 데스크탑 컴퓨터(Desktop Computer), 노트북(Notebook) 컴퓨터, 휴대전화(Cellular Phone) 등의 이동 장치(Mobile Device), PDA(Personal Digital Assistant) 등일 수 있으나 이에 한정되는 것은 아니다. 한편, 플랫폼(130)은 다양한 장치(제 1 플랫폼, 제 2 플랫폼 내지 제 N 플랫폼)를 포함할 수 있다.The
제 1 실시예 및 제 2 실시예에 따른 플랫폼(130)은 중간 언어 변환 장치(120)로부터 실행파일을 전송받아 구동한다. 한편, 제 3 실시예에 따른 플랫폼(130)은 중간 언어 변환 장치(120)로부터 플랫폼의 종속적인 중간 언어 코드를 전송받고 이를 플랫폼(130)에 맞게 실행파일로 변환 후 구동한다. 한편, 제 4 실시예에 따른 각 플랫폼(130)은 개발자 단말기(110)로부터 실행파일을 전송받아 구동한다.The
도 2는 본 실시예에 따른 중간 언어 변환 장치를 개략적으로 나타낸 블럭 구성도이다.2 is a block diagram schematically illustrating an intermediate language conversion apparatus according to the present embodiment.
제 1 실시예에 따른 중간 언어 변환 장치(120)는 전처리 수행부(220), 컴파일부(230), 실행 파일 생성부(240) 및 실행 파일 구동부(250)를 포함한다. 제 1 실시예에서는 중간 언어 변환 장치(120)가 소스 파일 생성부(210), 전처리 수행부(220), 컴파일부(230), 실행 파일 생성부(240) 만을 포함하는 것으로 기재하고 있으나, 이는 제 1 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 제 1 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 제 1 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 중간 언어 변환 장치(120)에 포함되는 구성 요소에 대하여 다양하게 수정 및 변형하여 적용 가능할 것이다. 여기서, 소스 파일 생성부(210)는 개발자 단말기(110)에 포함될 수 있으며, 실행 파일 구동부(250)는 플랫폼(130)에 포함될 수 있다.The intermediate
개발자 단말기(110)에 포함된 소스 파일 생성부(210)는 C 언어 기반의 소스 파일을 생성한다. 이때, 중간 언어 변환 장치(120)에 포함된 전처리 수행부(220)는 소스 파일에 대한 전처리를 수행한다. The
중간 언어 변환 장치(120)에 포함된 컴파일부(230)는 전처리가 수행된 소스 파일을 중간 언어 코드로 변환하고, 중간 언어 코드를 플랫폼에 따라 컴파일할 때 특정 타입을 갖는 상수를 공통 상수를 경유하여 플랫폼(130)에 따른 값을 갖는 상수로 변환되도록 한다. 여기서, 특정 타입이란 'type ()'를 말한다. 이러한, 중간 언어 변환 장치(120)에 포함된 컴파일부(230)는 독립적 컴파일부(232)와 종속적 컴파일부(234)를 포함하는데, 이러한 독립적 컴파일부(232)와 종속적 컴파일부(234)에 대해 각각 설명하자면 다음과 같다. 독립적 컴파일부(232)는 중간 언어 코드를 플랫폼의 독립적인 중간 언어 코드로 컴파일한다. 또한, 독립적 컴파일부(232)는 특정 타입을 갖는 소스 파일을 중간 언어 코드로 변환한 후 중간 언어 코드를 플랫폼(130)의 독립적인 중간 언어 코드로 컴파일할 때 특정 타입을 갖는 상수를 공통 상수로 변환한다. 한편, 종속적 컴파일부(234)는 독립적인 중간 언어 코드를 플랫폼(130)의 종속적인 중간 언어 코드로 컴파일한다. 또한, 종속적 컴파일부(234)는 독립적인 중간 언어 코드를 플랫폼(130)의 종속적인 중간 언어 코드로 컴파일할 때 독립적인 중간 언어 코드에 포함된 공통 상수를 플랫폼(130)에 따른 값을 갖는 상수로 변환한다. 또한, 종속적인 컴파일부(230)는 독립적인 중간 언어 코드를 종속적인 중간 언어 코드로 컴파일할 때 문법 오류 체크를 수행하며, 확인 결과, 문법 오류 체크에 오류가 없는 경우 실행 파일 생성부(240)에서 실행 파일을 생성한다.
중간 언어 변환 장치(120)에 포함된 실행 파일 생성부(240)는 컴파일된 중간 언어 코드에 대한 실행 파일을 생성한다. 또한, 플랫폼(130)에 포함된 실행 파일 구동부(250)는 실행 파일이 플랫폼(130)에서 구동되도록 한다.The
도 3은 제 2 실시예에 따른 중간 언어 변환 시스템을 개략적으로 나타낸 블럭 구성도이다.3 is a block diagram schematically illustrating an intermediate language conversion system according to a second embodiment.
제 2 실시예에 따른 개발자 단말기(110)는 소스 파일 생성부(210), 전처리 수행부(220) 및 독립적 컴파일부(232)를 포함하고, 중간 언어 변환 장치(120)는 종속적 컴파일부(234) 및 실행 파일 생성부(240)를 포함하고, 플랫폼(130)은 실행 파일 구동부(240)를 포함한다. 제 2 실시예에서, 개발자 단말기(110), 중간 언어 변환 장치(120) 및 플랫폼(130)에 포함된 각 모듈은 제 2 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 제 2 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본질적인 특성에서 벗어나지 않는 범위에서 다양하게 수정 및 변형하여 적용 가능할 것이다.The
개발자 단말기(110)에 포함된 소스 파일 생성부(210)는 C 언어 기반의 소스 파일을 생성한다. 개발자 단말기(110)에 포함된 전처리 수행부(220)는 소스 파일에 대한 전처리를 수행한다. 개발자 단말기(110)에 포함된 독립적 컴파일부(232)는 중간 언어 코드를 플랫폼의 독립적인 중간 언어 코드로 컴파일한다. 또한, 개발자 단말기(110)에 포함된 독립적 컴파일부(232)는 특정 타입을 갖는 소스 파일을 중간 언어 코드로 변환한 후 중간 언어 코드를 플랫폼(130)의 독립적인 중간 언어 코드로 컴파일할 때 특정 타입을 갖는 상수를 공통 상수로 변환한다. 여기서, 특정 타입은 'type ()'를 말한다. The
한편, 중간 언어 변환 장치(120)에 포함된 종속적 컴파일부(234)는 독립적인 중간 언어 코드를 플랫폼(130)의 종속적인 중간 언어 코드로 컴파일한다. 또한, 중간 언어 변환 장치(120)에 포함된 종속적 컴파일부(234)는 독립적인 중간 언어 코드를 플랫폼(130)의 종속적인 중간 언어 코드로 컴파일할 때 독립적인 중간 언어 코드에 포함된 공통 상수를 플랫폼(130)에 따른 값을 갖는 상수로 변환한다. 또한, 종속적인 컴파일부(230)는 독립적인 중간 언어 코드를 종속적인 중간 언어 코드로 컴파일할 때 문법 오류 체크를 수행하며, 확인 결과, 문법 오류 체크에 오류가 없는 경우 실행 파일 생성부(240)에서 실행 파일을 생성한다. 중간 언어 변환 장치(120)에 포함된 실행 파일 생성부(240)는 컴파일된 중간 언어 코드에 대한 실행 파일을 생성한다. 또한, 플랫폼(130)에 포함된 실행 파일 구동부(250)는 실행 파일이 플랫폼(130)에서 구동되도록 한다.Meanwhile, the
도 4는 제 3 실시예에 따른 중간 언어 변환 시스템을 개략적으로 나타낸 블럭 구성도이다.4 is a block diagram schematically illustrating an intermediate language conversion system according to a third embodiment.
제 3 실시예에 따른 개발자 단말기(110)는 소스 파일 생성부(210), 전처리 수행부(220) 및 독립적 컴파일부(232)를 포함하고, 중간 언어 변환 장치(120)는 종속적 컴파일부(234)를 포함하고, 플랫폼(130)은 실행 파일 생성부(240) 및 실행 파일 구동부(240)를 포함한다. 제 3 실시예에서, 개발자 단말기(110), 중간 언어 변환 장치(120) 및 플랫폼(130)에 포함된 각 모듈은 제 3 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 제 3 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본질적인 특성에서 벗어나지 않는 범위에서 다양하게 수정 및 변형하여 적용 가능할 것이다.The
개발자 단말기(110)에 포함된 소스 파일 생성부(210)는 C 언어 기반의 소스 파일을 생성한다. 개발자 단말기(110)에 포함된 전처리 수행부(220)는 소스 파일에 대한 전처리를 수행한다. 개발자 단말기(110)에 포함된 독립적 컴파일부(232)는 중간 언어 코드를 플랫폼의 독립적인 중간 언어 코드로 컴파일한다. 또한, 개발자 단말기(110)에 포함된 독립적 컴파일부(232)는 특정 타입을 갖는 소스 파일을 중간 언어 코드로 변환한 후 중간 언어 코드를 플랫폼(130)의 독립적인 중간 언어 코드로 컴파일할 때 특정 타입을 갖는 상수를 공통 상수로 변환한다. 여기서, 특정 타입은 'type ()'를 말한다. The
한편, 중간 언어 변환 장치(120)에 포함된 종속적 컴파일부(234)는 독립적인 중간 언어 코드를 플랫폼(130)의 종속적인 중간 언어 코드로 컴파일한다. 또한, 중간 언어 변환 장치(120)에 포함된 종속적 컴파일부(234)는 독립적인 중간 언어 코드를 플랫폼(130)의 종속적인 중간 언어 코드로 컴파일할 때 독립적인 중간 언어 코드에 포함된 공통 상수를 플랫폼(130)에 따른 값을 갖는 상수로 변환한다. 또한, 중간 언어 변환 장치(120)에 포함된 종속적인 컴파일부(230)는 독립적인 중간 언어 코드를 종속적인 중간 언어 코드로 컴파일할 때 문법 오류 체크를 수행하며, 확인 결과, 문법 오류 체크에 오류가 없는 경우 실행 파일 생성부(240)에서 실행 파일을 생성한다.Meanwhile, the
또한, 플랫폼(130)에 포함된 실행 파일 생성부(240)는 컴파일된 중간 언어 코드에 대한 실행 파일을 생성한다. 플랫폼(130)에 포함된 실행 파일 구동부(250)는 실행 파일이 플랫폼(130)에서 구동되도록 한다.In addition, the
도 5는 제 4 실시예에 따른 중간 언어 변환 시스템을 개략적으로 나타낸 블럭 구성도이다.5 is a block diagram schematically illustrating an intermediate language conversion system according to a fourth embodiment.
제 4 실시예에 따른 개발자 단말기(110)는 소스 파일 생성부(210), 전처리 수행부(220), 독립적 컴파일부(232), 종속적 컴파일부(234) 및 실행 파일 생성부(240)를 포함하고, 플랫폼(130)은 실행 파일 구동부(240)를 포함한다. 제 4 실시예에서, 개발자 단말기(110) 및 플랫폼(130)에 포함된 각 모듈은 제 4 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 제 4 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본질적인 특성에서 벗어나지 않는 범위에서 다양하게 수정 및 변형하여 적용 가능할 것이다.The
개발자 단말기(110)에 포함된 소스 파일 생성부(210)는 C 언어 기반의 소스 파일을 생성한다. 개발자 단말기(110)에 포함된 전처리 수행부(220)는 소스 파일에 대한 전처리를 수행한다. 개발자 단말기(110)에 포함된 독립적 컴파일부(232)는 중간 언어 코드를 플랫폼의 독립적인 중간 언어 코드로 컴파일한다. 또한, 개발자 단말기(110)에 포함된 독립적 컴파일부(232)는 특정 타입을 갖는 소스 파일을 중간 언어 코드로 변환한 후 중간 언어 코드를 플랫폼(130)의 독립적인 중간 언어 코드로 컴파일할 때 특정 타입을 갖는 상수를 공통 상수로 변환한다. 여기서, 특정 타입은 'type ()'를 말한다.The
한편, 개발자 단말기(110)에 포함된 종속적 컴파일부(234)는 독립적인 중간 언어 코드를 플랫폼(130)의 종속적인 중간 언어 코드로 컴파일한다. 또한, 개발자 단말기(110)에 포함된 종속적 컴파일부(234)는 독립적인 중간 언어 코드를 플랫폼(130)의 종속적인 중간 언어 코드로 컴파일할 때 독립적인 중간 언어 코드에 포함된 공통 상수를 플랫폼(130)에 따른 값을 갖는 상수로 변환한다. 또한, 개발자 단말기(110)에 포함된 종속적인 컴파일부(230)는 독립적인 중간 언어 코드를 종속적인 중간 언어 코드로 컴파일할 때 문법 오류 체크를 수행하며, 확인 결과, 문법 오류 체크에 오류가 없는 경우 개발자 단말기(110)에 포함된 실행 파일 생성부(240)에서 실행 파일을 생성한다. 개발자 단말기(110)에 포함된 실행 파일 생성부(240)는 컴파일된 중간 언어 코드에 대한 실행 파일을 생성한다. 한편, 플랫폼(130)에 포함된 실행 파일 구동부(250)는 실행 파일이 플랫폼(130)에서 구동되도록 한다.Meanwhile, the
도 6은 본 실시예에 따른 중간 언어 변환 방법을 설명하기 위한 순서도이다.6 is a flowchart illustrating an intermediate language conversion method according to the present embodiment.
소스 파일 생성부(210)는 C 언어 기반의 소스 파일을 생성한다(S610). 단계 S610의 소스 파일 생성부(210)는 제 1 실시예 내지 제 4 실시예에 따라 개발자 단말기(110)에 포함될 수 있다. 전처리 수행부(220)는 소스 파일에 대한 전처리를 수행한다(S620). 단계 S620에서의 전처리 수행부(220)는 제 1 실시예에 따라 중간 언어 변환 장치(120)에 포함될 수 있고, 제 2 실시예 내지 제 4 실시예에 따라 개발자 단말기(110)에 포함될 수 있다.The
독립적 컴파일부(232) 및 종속적 컴파일부(234)는 소스 파일을 중간 언어 코드로 변환하고, 중간 언어 코드를 플랫폼(130)에 따라 컴파일할 때 특정 타입을 갖는 상수가 공통 상수를 경유하여 플랫폼(130)에 따른 값을 갖는 상수로 변환되도록 한다(S630). 단계 S630에서의 독립적 컴파일부(232)는 제 1 실시예에 따라 중간 언어 변환 장치(120)에 포함될 수 있고, 제 2 실시예 내지 제 4 실시예에 따라 개발자 단말기(110)에 포함될 수 있다. 한편, 종속적 컴파일부(234)는 제 1 실시예 내지 제 3 실시예에 따라 중간 언어 변환 장치(120)에 포함될 수 있고, 제 4 실시예에 따라 개발자 단말기(110)에 포함될 수 있다.The
단계 S630에서 독립적 컴파일부(232)는 플랫폼(130)에 독립적인 중간 언어 코드로 변환할 수 있다. 이러한, 중간 언어 코드로의 변환은 미리 저장된 C 언어 기반의 프로그래밍 언어와 중간 언어 코드 사이의 매칭 정보를 이용하여 수행될 수 있다. 그 결과 애플리케이션의 소스 파일을, 특정 CPU 또는 운영 체제에 의존적이지 않은 중간 언어 코드로 변환할 수 있는 것이다. 한편, 단계 S630에서 독립적 컴파일부(232)에서 전처리가 수행된 소스 파일을 플랫폼(130)의 독립적인 중간 언어 코드로 컴파일하는 독립적 컴파일 과정을 거치고, 종속적 컴파일부(234)에서 독립적인 중간 언어 코드를 플랫폼(130)의 종속적인 중간 언어 코드로 컴파일하는 종속적 컴파일 과정을 거친다. 이때, 단계 S630에서, 독립적 컴파일부(232)는 독립적 컴파일 과정을 수행하기 위해 특정 타입을 갖는 소스 파일을 중간 언어 코드로 변환한 후 중간 언어 코드를 플랫폼(130)의 독립적인 중간 언어 코드로 컴파일할 때 특정 타입을 갖는 상수를 공통 상수로 변환한다. In operation S630, the
또한, 종속적 컴파일부(234)는 종속적 컴파일 과정을 수행하기 위해 독립적인 중간 언어 코드를 플랫폼의 종속적인 중간 언어 코드로 컴파일할 때 독립적인 중간 언어 코드에 포함된 공통 상수를 플랫폼(130)에 따른 값을 갖는 상수로 변환한다. 여기서, '상수'는 한번 값을 저장하면 변경이 불가능한 값을 말하며, 변수와 마찬가지로 상수도 값을 저장할 수 있는 메모리 공간을 가지나, 변수와 다르게 데이터의 변경은 불가능하다. 또한, 단계 S630에서 종속적 컴파일부(234)는 종속적인 컴파일 과정을 수행할 때 독립적인 중간 언어 코드를 종속적인 중간 언어 코드로 컴파일할 때 문법 오류 체크를 수행하며, 확인 결과, 문법 오류 체크에 오류가 없는 경우 실행 파일 생성 과정에서 실행 파일을 생성한다. 이때, 특정 타입은 'type ()'를 말하며, 'type ()'란 인수의 형을 지정하는 일종의 지시자를 말한다.In addition, the dependent compiling
실행 파일 생성부(240)는 컴파일된 중간 언어 코드에 대한 실행 파일을 생성한다(S640). 단계 S640에서 중간 언어 변환 장치(120)는 자동으로 또는 하나 이상의 플랫폼으로부터의 다운로드 요청에 의해, 중간 언어 코드의 형태로 되어 있는 애플리케이션을 해당 플랫폼에 대응되는 실행 파일을 생성할 수 있다. 단계 S640에서의 실행 파일 생성부(240)는 제 1 실시예 및 제 2 실시예에 따라 중간 언어 변환 장치(120)에 포함될 수 있고, 제 3 실시예에 따라 플랫폼(130)에 포함될 수 있고, 제 4 실시예에 따라 개발자 단말기(110)에 포함될 수 있다.The
실행 파일 구동부(240)는 실행 파일이 플랫폼(130)에서 구동되도록 한다(S650). 단계 S650에서, 실행 파일 구동부(240)는 하나 이상의 동일하거나 또는 서로 상이한 종류의 플랫폼(130)과 통신할 수 있으며, 플랫폼(130)의 CPU 또는 운영체제 정보 등과 같은 플랫폼의 프로파일을 수신할 수 있다. 즉, 실행 파일 구동부(240)에서 중간 언어 코드가 플랫폼(130)에 대응되는 실행 파일의 형태로 변환되므로, 플랫폼(130)에서는 애플리케이션을 플랫폼(130)에 최적화된 실행파일 등의 형태로 다운로드 또는 실행할 수 있다. 단계 S650에서의 실행 파일 구동부(240)는 제 1 실시예 및 제 4 실시예에 따라 플랫폼(130)에 포함될 수 있다.The
도 3에서는 단계 S610 내지 단계 S650을 순차적으로 실행하는 것으로 기재하고 있으나, 이는 본 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 도 3에 기재된 순서를 변경하여 실행하거나 단계 S610 내지 단계 S650 중 하나 이상의 단계를 병렬적으로 실행하는 것으로 다양하게 수정 및 변형하여 적용 가능할 것이므로, 도 3은 시계열적인 순서로 한정되는 것은 아니다.In FIG. 3, steps S610 to S650 are described as being sequentially executed. However, this is merely illustrative of the technical idea of the present embodiment, and those of ordinary skill in the art to which the present embodiment pertains will be described. 3 may be modified and modified in various manners by changing the order described in FIG. 3 or executing one or more steps of steps S610 to S650 in parallel without departing from the essential characteristics thereof. It is not limited.
전술한 바와 같이 도 6에 기재된 본 실시예에 따른 중간 언어 변환 방법은 프로그램으로 구현되고 컴퓨터로 읽을 수 있는 기록매체에 기록될 수 있다. 본 실시예에 따른 중간 언어 변환 방법을 구현하기 위한 프로그램이 기록되고 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 이러한 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어, 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수도 있다. 또한, 본 실시예를 구현하기 위한 기능적인(Functional) 프로그램, 코드 및 코드 세그먼트들은 본 실시예가 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있을 것이다.As described above, the intermediate language conversion method according to the present embodiment described in FIG. 6 may be implemented in a program and recorded in a computer-readable recording medium. The computer-readable recording medium having recorded thereon a program for implementing the intermediate language conversion method according to the present embodiment includes all kinds of recording devices for storing data that can be read by a computer system. Examples of such computer-readable recording media include ROM, RAM, CD-ROM, magnetic tape, floppy disk, optical data storage, etc., and also implemented in the form of a carrier wave (e.g., transmission over the Internet) . The computer readable recording medium may also be distributed over a networked computer system so that computer readable code is stored and executed in a distributed manner. Also, functional programs, codes, and code segments for implementing the present embodiment may be easily inferred by programmers in the art to which the present embodiment belongs.
도 7은 본 실시예에 따른 중간 언어 변환 과정을 설명하기 위한 예시도이다.7 is an exemplary diagram for describing an intermediate language conversion process according to the present embodiment.
도 7의 (A)에 도시된 바와 같이, C 언어에서 제공하는 '변수'에 대한 초기화 값들로 이용되는 '상수'들은 각각의 플랫폼에 따른 다른 크기 또는 인코딩(Encording) 값을 가질 수 있다. 예컨대, 'long type 변수'의 초기화값에 이용되는 '상수'는 x86-32bit에서는 32bit 크기를 가지며, x86-64bit 또는 x64-64bit에서는 64bit 크기를 가진다. 또한, 이러한 크기에 따라 '상수'의 인코딩 값도 달라지는데, 이렇게 변할 수 있는 '상수'들은 플랫폼의 독립적인 중간 언어 코드를 형성하는데 문제점으로 작용한다. 즉, 도 4의 (A)에 도시된 바와 같이, 일반적인 컴파일러는 '변수'에 대한 초기화 값들로 이용되는 '상수(oxffffffff)'들로 인해 발생할 수 있는 문법 에러들을 컴파일 과정에서 체크한 후 에러가 발생되지 않은 경우 중간 언어 코드로 생성한다.As shown in FIG. 7A, 'constants' used as initialization values for 'variables' provided by the C language may have different sizes or encoding values according to respective platforms. For example, the 'constant' used for the initialization value of the 'long type variable' has a size of 32 bits in x86-32bit and a size of 64bit in x86-64bit or x64-64bit. In addition, depending on the size, the encoding value of the 'constant' is also changed. The 'constant', which can be changed, is a problem in forming an intermediate language code independent of the platform. That is, as shown in (A) of FIG. 4, the general compiler checks grammatical errors that may occur due to 'oxffffffff' used as initialization values for 'variables' in the compilation process. If not generated, the intermediate language code is generated.
한편, 도 7의 (B)에 도시된 바와 같이, 플랫폼에 따라 다른 값을 갖는 '변수'에 대한 초기화 값들로 이용되는 '특정 타입을 갖는 상수(oxffffffff)'들을 위해 모든 플랫폼의 '상수'들로 변환 가능한 공통적인 표현법의 상수인 '공통 상수(oxffffffff→oxffffffffffffffff)'를 플랫폼의 독립적인 중간 코드에 이용한다. 본 실시예에 따른 '공통 상수'란 각각의 플랫폼에 따라 다른 값을 갖는 변수에 대한 초기화 값으로 이용되는 상수를 어떠한 플랫폼으로 변환 가능하도록 공통적인 표현법으로 표현한 상수를 일컫는다. 예컨대, 제 1 플랫폼이 x86-32bit를 지원하고, 제 2 플랫폼이 x86-64bit 또는 x64-64bit를 지원할 때 '공통 상수'는 제 1 플랫폼과 제 2 플랫폼으로 모두 변환 가능한 포맷(Format)을 갖는다. 또한, 컴파일 과정에서 관련된 문법체크 없이 '공통 상수(oxffffffffffffffff)'는 컴파일된 플랫폼의 독립적인 중간 언어 코드 내에 그대로 유지되며, 플랫폼의 독립적인 중간 언어 코드가 플랫폼의 종속적인 중간 언어 코드로 변환될 때 각 플랫폼에 맞는 크기와 인코딩으로 변환된다. 변환이 완료된 후 변환된 '플랫폼(130)에 따른 값을 갖는 상수(oxffffffffffffffff→oxffffffff)'로 인해 문법적인 에러가 발생하였는지를 체크하는 과정을 통해 일반적인 컴파일러와 같이 문법 체크 기능을 수행할 수 있다.Meanwhile, as shown in (B) of FIG. 7, 'constants' of all platforms for 'oxffffffff' having specific types used as initialization values for 'variables' having different values depending on the platform. We use the common constant (oxffffffff → oxffffffffffffffff), which is a constant of the common notation that can be transformed into. The 'common constant' according to the present embodiment refers to a constant expressed by a common expression so that the constant used as an initialization value for a variable having a different value according to each platform can be converted to any platform. For example, when the first platform supports x86-32bit and the second platform supports x86-64bit or x64-64bit, the 'common constant' has a format convertible to both the first platform and the second platform. In addition, the common constant (oxffffffffffffffff) remains intact within the compiled platform's independent intermediate language code without any grammar checks involved in the compilation process. It is converted to the size and encoding for each platform. After the conversion is completed, the syntax check function may be performed like a general compiler by checking whether a grammatical error occurs due to the constant 'oxffffffffffffffff → oxffffffff' having a value according to the converted
이상의 설명은 본 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 실시예들은 본 실시예의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 실시예의 기술 사상의 범위가 한정되는 것은 아니다. 본 실시예의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 실시예의 권리범위에 포함되는 것으로 해석되어야 할 것이다.The foregoing description is merely illustrative of the technical idea of the present embodiment, and various modifications and changes may be made to those skilled in the art without departing from the essential characteristics of the embodiments. Therefore, the present embodiments are to be construed as illustrative rather than restrictive, and the scope of the technical idea of the present embodiment is not limited by these embodiments. The scope of protection of the present embodiment should be construed according to the following claims, and all technical ideas within the scope of equivalents thereof should be construed as being included in the scope of the present invention.
110: 개발자 단말기 120: 중간 언어 변환 장치
130: 플랫폼 210: 소스 파일 생성부
220: 전처리 수행부 230: 컴파일부
240: 실행 파일 생성부 250: 실행 파일 구동부110: developer terminal 120: intermediate language conversion device
130: platform 210: source file generation unit
220: preprocessing unit 230: compilation unit
240: executable file generating unit 250: executable file driving unit
Claims (13)
상기 소스 파일을 중간 언어 코드로 변환하고, 상기 중간 언어 코드를 플랫폼(Platform)에 따라 컴파일(Compile)할 때 특정 타입을 갖는 상수를 공통 상수를 경유하여 상기 플랫폼에 따른 값을 갖는 상수로 변환되도록 하는 컴파일 과정;
상기 컴파일된 상기 중간 언어 코드에 대한 실행 파일을 생성하는 실행 파일 생성 과정; 및
상기 실행 파일이 상기 플랫폼에서 구동되도록 하는 실행 파일 구동 과정을 포함하는 것을 특징으로 하는 공통 표현을 이용한 중간 언어 변환 방법.
A source file generation process of generating a C-Language-based source file;
Converting the source file into an intermediate language code and converting the constant language having a specific type into a constant having a value according to the platform via a common constant when compiling the intermediate language code according to a platform. The compilation process;
An executable file generation step of generating an executable file for the compiled intermediate language code; And
Intermediate language conversion method using a common expression comprising the step of driving the executable file to run the executable file on the platform.
상기 컴파일 과정은,
상기 중간 언어 코드를 상기 플랫폼의 독립적인 중간 언어 코드로 컴파일하는 독립적 컴파일 과정; 및
상기 독립적인 중간 언어 코드를 상기 플랫폼의 종속적인 중간 언어 코드로 컴파일하는 종속적 컴파일 과정을 포함하는 것을 특징으로 하는 공통 표현을 이용한 중간 언어 변환 방법.
The method of claim 1,
The compilation process,
An independent compilation process of compiling the intermediate language code into independent intermediate language code of the platform; And
And a dependent compilation process of compiling the independent intermediate language code into the dependent intermediate language code of the platform.
상기 독립적 컴파일 과정은,
상기 특정 타입을 갖는 상기 소스 파일을 상기 중간 언어 코드로 변환한 후 상기 중간 언어 코드를 상기 플랫폼의 독립적인 중간 언어 코드로 컴파일할 때 상기 특정 타입을 갖는 상수를 상기 공통 상수로 변환하는 것을 특징으로 하는 공통 표현을 이용한 중간 언어 변환 방법.
3. The method of claim 2,
The independent compilation process,
Converting the source file having the specific type into the intermediate language code and then converting the constant having the specific type into the common constant when compiling the intermediate language code into an independent intermediate language code of the platform. Intermediate language conversion method using a common expression.
상기 종속적 컴파일 과정은,
상기 독립적인 중간 언어 코드를 상기 플랫폼의 종속적인 중간 언어 코드로 컴파일할 때 상기 독립적인 중간 언어 코드에 포함된 상기 공통 상수를 상기 플랫폼에 따른 값을 갖는 상수로 변환하는 것을 특징으로 하는 공통 표현을 이용한 중간 언어 변환 방법.
3. The method of claim 2,
The dependent compilation process,
When the independent intermediate language code is compiled into a dependent intermediate language code of the platform, the common expression included in the independent intermediate language code is converted into a constant having a value according to the platform. Intermediate language conversion method used.
상기 종속적인 컴파일 과정은,
상기 독립적인 중간 언어 코드를 상기 종속적인 중간 언어 코드로 컴파일할 때 문법 오류 체크를 수행하며, 확인 결과, 상기 문법 오류 체크에 오류가 없는 경우 상기 실행 파일 생성 과정에서 상기 실행 파일을 생성하는 것을 특징으로 하는 공통 표현을 이용한 중간 언어 변환 방법.
The method of claim 4, wherein
The dependent compilation process,
When compiling the independent intermediate language code into the dependent intermediate language code, a grammatical error check is performed, and if there is no error in the grammar error check, the executable file is generated during the execution file generation process. Intermediate language conversion method using a common expression.
상기 소스 파일에 대한 전처리(Preprocessing)를 수행하는 전처리 수행 과정을 추가로 포함하는 것을 특징으로 하는 공통 표현을 이용한 중간 언어 변환 방법.
The method of claim 1,
The intermediate language conversion method using a common expression, characterized in that it further comprises a preprocessing step of performing a preprocessing for the source file.
상기 소스 파일을 중간 언어 코드로 변환하고, 상기 중간 언어 코드를 플랫폼에 따라 컴파일할 때 특정 타입을 갖는 상수를 공통 상수를 경유하여 상기 플랫폼에 따른 값을 갖는 상수로 변환되도록 하는 컴파일부;
상기 컴파일된 상기 중간 언어 코드에 대한 실행 파일을 생성하는 실행 파일 생성부; 및
상기 실행 파일이 상기 플랫폼에서 구동되도록 하는 실행 파일 구동부를 포함하는 것을 특징으로 하는 중간 언어 변환 시스템.
A source file generator for generating a C language-based source file;
A compiling unit for converting the source file into an intermediate language code and converting a constant having a specific type into a constant having a value corresponding to the platform via a common constant when compiling the intermediate language code according to a platform;
An executable file generator which generates an executable file for the compiled intermediate language code; And
And an executable file driver configured to allow the executable file to be run on the platform.
상기 컴파일부는,
상기 중간 언어 코드를 상기 플랫폼의 독립적인 중간 언어 코드로 컴파일하는 독립적 컴파일부; 및
상기 독립적인 중간 언어 코드를 상기 플랫폼의 종속적인 중간 언어 코드로 컴파일하는 종속적 컴파일부를 포함하는 것을 특징으로 하는 중간 언어 변환 시스템.
The method of claim 7, wherein
The compilation unit,
An independent compiler for compiling the intermediate language code into independent intermediate language code of the platform; And
And a dependent compilation unit for compiling the independent intermediate language code into the dependent intermediate language code of the platform.
상기 독립적 컴파일부는,
상기 특정 타입을 갖는 상기 소스 파일을 상기 중간 언어 코드로 변환한 후 상기 중간 언어 코드를 상기 플랫폼의 독립적인 중간 언어 코드로 컴파일할 때 상기 특정 타입을 갖는 상수를 상기 공통 상수로 변환하는 것을 특징으로 하는 중간 언어 변환 시스템.
The method of claim 8,
The independent compilation unit,
Converting the source file having the specific type into the intermediate language code and then converting the constant having the specific type into the common constant when compiling the intermediate language code into an independent intermediate language code of the platform. Intermediate language conversion system.
상기 종속적 컴파일부는,
상기 독립적인 중간 언어 코드를 상기 플랫폼의 종속적인 중간 언어 코드로 컴파일할 때 상기 독립적인 중간 언어 코드에 포함된 상기 공통 상수를 상기 플랫폼에 따른 값을 갖는 상수로 변환하는 것을 특징으로 하는 중간 언어 변환 시스템.
The method of claim 8,
The dependent compilation unit,
When compiling the independent intermediate language code into the dependent intermediate language code of the platform, converting the common constant included in the independent intermediate language code into a constant having a value according to the platform. system.
상기 종속적인 컴파일부는,
상기 독립적인 중간 언어 코드를 상기 종속적인 중간 언어 코드로 컴파일할 때 문법 오류 체크를 수행하며, 확인 결과, 상기 문법 오류 체크에 오류가 없는 경우 상기 실행 파일 생성부에서 상기 실행 파일을 생성하는 것을 특징으로 하는 중간 언어 변환 시스템.
11. The method of claim 10,
The dependent compilation unit,
When compiling the independent intermediate language code into the dependent intermediate language code, a grammatical error check is performed, and if there is no error in the grammatical error check, the executable file generation unit generates the executable file. Intermediate language conversion system.
상기 소스 파일에 대한 전처리를 수행하는 전처리 수행부를 추가로 포함하는 것을 특징으로 하는 중간 언어 변환 시스템.
The method of claim 7, wherein
And a preprocessing execution unit which performs preprocessing on the source file.
C 언어(C-Language) 기반의 소스(Source) 파일을 생성하는 소스 파일 생성 과정;
상기 소스 파일을 중간 언어 코드로 변환하고, 상기 중간 언어 코드를 플랫폼(Platform)에 따라 컴파일(Compile)할 때 특정 타입을 갖는 상수를 공통 상수를 경유하여 상기 플랫폼에 따른 값을 갖는 상수로 변환되도록 하는 컴파일 과정;
상기 컴파일된 상기 중간 언어 코드에 대한 실행 파일을 생성하는 실행 파일 생성 과정; 및
상기 실행 파일이 상기 플랫폼에서 구동되도록 하는 실행 파일 구동 과정을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.In the data processing device,
A source file generation process of generating a C-Language-based source file;
Converting the source file into an intermediate language code and converting the constant language having a specific type into a constant having a value according to the platform via a common constant when compiling the intermediate language code according to a platform. The compilation process;
An executable file generation step of generating an executable file for the compiled intermediate language code; And
A computer-readable recording medium having recorded thereon a program for realizing an executable file driving process for causing the executable file to be run on the platform.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110130293A KR101277145B1 (en) | 2011-12-07 | 2011-12-07 | Method For Transforming Intermediate Language by Using Common Representation, System And Computer-Readable Recording Medium with Program Therefor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110130293A KR101277145B1 (en) | 2011-12-07 | 2011-12-07 | Method For Transforming Intermediate Language by Using Common Representation, System And Computer-Readable Recording Medium with Program Therefor |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130063759A KR20130063759A (en) | 2013-06-17 |
KR101277145B1 true KR101277145B1 (en) | 2013-06-20 |
Family
ID=48860987
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020110130293A KR101277145B1 (en) | 2011-12-07 | 2011-12-07 | Method For Transforming Intermediate Language by Using Common Representation, System And Computer-Readable Recording Medium with Program Therefor |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101277145B1 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102152136B1 (en) * | 2013-10-08 | 2020-09-04 | 에스케이플래닛 주식회사 | Apparatus and Method for creating web application |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003065179A2 (en) | 2002-02-01 | 2003-08-07 | John Fairweather | A system and method for mining data |
KR20050000328A (en) * | 2003-06-23 | 2005-01-03 | 마이크로소프트 코포레이션 | Query optimizer system and method |
KR20090089382A (en) * | 2006-12-14 | 2009-08-21 | 후지쯔 가부시끼가이샤 | Compile method and compiler |
-
2011
- 2011-12-07 KR KR1020110130293A patent/KR101277145B1/en active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003065179A2 (en) | 2002-02-01 | 2003-08-07 | John Fairweather | A system and method for mining data |
KR20050000328A (en) * | 2003-06-23 | 2005-01-03 | 마이크로소프트 코포레이션 | Query optimizer system and method |
KR20090089382A (en) * | 2006-12-14 | 2009-08-21 | 후지쯔 가부시끼가이샤 | Compile method and compiler |
Also Published As
Publication number | Publication date |
---|---|
KR20130063759A (en) | 2013-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10402208B2 (en) | Adaptive portable libraries | |
CN110096338A (en) | Intelligent contract executes method, apparatus, equipment and medium | |
JP5415557B2 (en) | User script code conversion for debugging | |
CN102637136B (en) | For the method and apparatus merging the Debugging message from the different compiler stages | |
CN103218294B (en) | A kind of adjustment method of embedded system, debugging conversion equipment and system | |
US6934940B2 (en) | Source code transformation-temporary object reduction | |
US8930925B2 (en) | Method for enabling compilation of a Cobol source program utilizing a two-stage compilation process, the Cobol source program including a mix of Cobol, C++ or JAVA statements, and optional OpenMP directives | |
KR101092373B1 (en) | System and method for generating software package and installing the same | |
KR20130003836A (en) | System and method for providing application | |
KR101349631B1 (en) | Method For Transforming Intermediate Language, System And Computer-Readable Recording Medium with Program Therefor | |
US10452364B2 (en) | Method and system for preparing code to be executed by programmable control devices | |
US10656926B2 (en) | Compact type layouts | |
US20060009962A1 (en) | Code conversion using parse trees | |
KR101277145B1 (en) | Method For Transforming Intermediate Language by Using Common Representation, System And Computer-Readable Recording Medium with Program Therefor | |
CN112148283A (en) | Implementation method of cross-platform ABI compatible C + + component framework | |
KR101349628B1 (en) | Method For Transforming Intermediate Language by Using Operator, System And Computer-Readable Recording Medium with Program Therefor | |
KR101449657B1 (en) | Method for transforming intermediate language using range of values of operator, system and computer-readable recording medium with program therefor | |
US9098317B2 (en) | Optional retargeting of library references | |
US20110099534A1 (en) | Information processing apparatus, execution program operation modification method, and recording medium | |
KR101670726B1 (en) | Method for code conversion using debugging information of intermediate language code, apparatus and computer-readable recording medium with program therefor | |
KR101598819B1 (en) | Method for code conversion using target-independent debugging information, apparatus and computer-readable recording medium with program therefor | |
Joseph et al. | Software Framework Of An All-In-One Transpiler For Development Of WORA Applicatons | |
Nellaiyapen | Practical WebAssembly: Explore the fundamentals of WebAssembly programming using Rust | |
CN113900631A (en) | Code generator design method based on antlr4 | |
CN117667157A (en) | Thermal updating method and system, updating method, medium and equipment for client application |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20160601 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20170601 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20180409 Year of fee payment: 6 |