KR20140109066A - Method for transforming intermediate language using range of values of operator, system and computer-readable recording medium with program therefor - Google Patents
Method for transforming intermediate language using range of values of operator, system and computer-readable recording medium with program therefor Download PDFInfo
- Publication number
- KR20140109066A KR20140109066A KR1020130023270A KR20130023270A KR20140109066A KR 20140109066 A KR20140109066 A KR 20140109066A KR 1020130023270 A KR1020130023270 A KR 1020130023270A KR 20130023270 A KR20130023270 A KR 20130023270A KR 20140109066 A KR20140109066 A KR 20140109066A
- Authority
- KR
- South Korea
- Prior art keywords
- platform
- intermediate language
- operator
- language code
- code
- 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/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
Description
실시예들은 연산자의 값의 범위를 이용한 중간 언어 변환 방법과 그를 위한 시스템 및 컴퓨터로 읽을 수 있는 기록매체에 관한 것이다. 더욱 상세하게는, 미리 결정된 연산자를 포함하는 C 언어(C-language) 기반의 소스 코드를 플랫폼(platform) 독립적인 중간 언어(intermediate language) 코드로 컴파일(compile)하는 과정에서, 플랫폼에 따라 연산자가 가질 수 있는 값의 범위(예컨대, 최대값 및 최소값)을 이용하여 플랫폼 종속적인 문법 오류를 검출할 수 있는 중간 언어 변환 방법과, 그를 위한 시스템 및 컴퓨터로 읽을 수 있는 기록매체에 관한 것이다. Embodiments relate to an intermediate language conversion method using a range of values of an operator, a system therefor, and a computer-readable recording medium. More particularly, in a process of compiling C language source code including a predetermined operator into an intermediate language code independent of a platform, The present invention relates to an intermediate language conversion method capable of detecting a platform-dependent grammar error using a range of possible values (e.g., a maximum value and a minimum value), and a system therefor and a computer readable recording medium.
프로그램(program)은 프로그래밍 언어(programming language)로 기입된다. 프로그래밍 언어는 컴퓨터에 의해 처리 및 실행될 수 있는 명령의 시퀀스(sequence)를 정의하는데 사용될 수 있는 임의의 인공 언어이다. 그러나, 프로그래밍 언어는 프로그래밍 언어를 사용하여 표현된 소스(source) 코드로부터 컴퓨터 또는 데이터 처리 시스템이 작업하는데 필요한 기계 코드로의, 컴파일러(compiler)와 같은 또 다른 프로그램에 의한 번역 절차를 필요로 한다.A 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 requires 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++ 언어가 있다.These programming languages are typically considered to belong to one of three different concept classes: a low-level language, a high-level language, or a mid-level language. Examples of common low-level programming languages are assembly language, high-level programming languages include COBOL, FORTRAN, Pascal, and intermediate-level programming languages C and C ++ .
C 언어는 기술된 중간 레벨 특징을 갖는, 고레벨 언어보다 더 기계-독립형인 어셈블리 언어인 것으로 많은 사람이 생각하는 프로그래밍 언어이다. C++ 언어는 기술된 중간 레벨 특징을 또한 포함하는 C 프로그래밍 언어의 객체-지향 버전이다. 본 명세서에서, 'C 언어'는 C 언어 및 그의 C++ 언어의 구현 모두를 지칭할 수 있다. C 언어는 중간 레벨 프로그래밍 언어와 관련된 가능한 논리적 실수, 특유의 위험, 및 비효율성의 구체적인 예를 보여주는데 이용될 수 있다.C is a programming language that many people think is 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 described mid-level features. In this specification, 'C language' may refer to both C language and its C ++ language implementation. The C language can be used to show concrete examples of possible logical mistakes, specific hazards, and inefficiencies associated with an intermediate level programming language.
이러한, C 언어 또는 C++ 언어 등의 프로그래밍 언어로 작성된 종래의 애플리케이션(application)들은, 애플리케이션이 사용될 플랫폼(platform)에 맞게 중간 언어(intermediate language)나 실행파일의 형태로 변환될 수 있다. 최근들어 다양한 정보기기의 사용에 따른 다양한 플랫폼이 이용됨에 따라, 각각의 플랫폼에 따라 특정 플랫폼에 의존적이지 않은 독립적인 중간 언어나 실행파일의 형태로 변환하는 기술이 필요한 실정이다.Conventional applications written in a programming language such as the C language or the C ++ language can be converted into an intermediate language or an executable file according to the platform in which the application is to be used. In recent years, various platforms for use of various information devices have been used. Thus, there is a need for a technique of converting into an independent intermediate language or an executable file which is not dependent on a specific platform according to each platform.
본 발명의 일 측면에 따르면, C언어(C-language) 기반의 소스(source) 코드를 플랫폼(platform)에 의존적이지 않은 독립적 중간 언어(intermediate language) 코드로 변환한 후 이로부터 각각의 플랫폼에 해당하는 종속적 중간 언어 코드로 변환하되, 독립적 중간 언어 코드로의 변환 과정에서 연산자에 관련된 문법 체크를 수행할 수 있는 중간 언어 변환 방법과 그를 위한 시스템 및 컴퓨터로 읽을 수 있는 기록매체를 제공할 수 있다. According to an aspect of the present invention, a C-language-based source code is converted into an independent intermediate language code that is not dependent on a platform, And a grammar check related to an operator in the process of converting into an independent intermediate language code, and a system and a computer readable recording medium therefor can be provided.
일 실시예에 따른 중간 언어(intermediate language) 변환 방법은, 미리 결정된 연산자를 포함하는, C 언어(C-language) 기반의 소스(source) 파일을 생성하는 단계; 상기 소스 파일을, 상기 연산자에 대응되는 문자열을 포함하는 플랫폼(platform) 독립적인 중간 언어 코드로 변환하는 단계; 및 상기 연산자에 대해 미리 결정된 값의 범위를 이용하여, 상기 플랫폼 독립적인 중간 언어 코드로부터 플랫폼 종속적인 문법 오류를 검출하는 단계를 포함할 수 있다. According to an exemplary embodiment, an intermediate language conversion method includes: generating a C-language based source file including a predetermined operator; Converting the source file into platform independent intermediate language code including a string corresponding to the operator; And detecting platform-dependent grammar errors from the platform independent intermediate language code using a range of predetermined values for the operator.
일 실시예에 따른 중간 언어 변환 시스템은, 미리 결정된 연산자를 포함하는 C 언어 기반의 소스 파일을 생성하는 소스 파일 생성부; 및 상기 소스 파일을, 상기 연산자에 대응되는 문자열을 포함하는 플랫폼 독립적인 중간 언어 코드로 변환하는 독립적 컴파일부를 포함할 수 있다. 또한, 상기 독립적 컴파일부는, 상기 연산자에 대해 미리 결정된 값의 범위를 이용하여, 상기 플랫폼 독립적인 중간 언어 코드로부터 플랫폼 종속적인 문법 오류를 검출하는 문법 체크부를 포함할 수 있다. An intermediate language conversion system according to an embodiment includes: a source file generation unit for generating a C language-based source file including a predetermined operator; And an independent compiler for converting the source file into platform independent intermediate language code including a string corresponding to the operator. In addition, the independent compiler may include a grammar checker for detecting a platform-dependent grammar error from the platform-independent intermediate language code using a predetermined range of values for the operator.
일 실시예에 따른 컴퓨터로 판독 가능한 기록 매체에는, 전술한 중간 언어 변환 방법을 수행하도록 데이터 처리 기기를 제어하기 위한 프로그램이 기록될 수 있다. In a computer-readable recording medium according to an embodiment, a program for controlling the data processing device to perform the above-described intermediate language conversion method may be recorded.
본 발명의 일 측면에 따르면, C언어(C-language) 기반의 소스(source) 코드를 특정 플랫폼(platform)에 의존적이지 않은 독립적인 중간 언어 코드로 컴파일(compile)한 후 이로부터 각각의 플랫폼에 해당하는 종속적인 중간 언어 코드로 변환하는 과정에 있어, 플랫폼에 따라 값이 달라지는 특정 연산자를 플랫폼 독립적인 중간 언어 코드상에 상수가 아닌 문자열로 표현하고, 컴파일러에 미리 저장된 해당 연산자의 값의 범위(예컨대, 최대값 및 최소값)을 이용하여 문법 체크를 수행할 수 있다. According to an aspect of the present invention, a C language-based source code is compiled into an independent intermediate language code that is not dependent on a specific platform, A specific operator whose value varies depending on the platform is expressed as a string not in a constant on the platform independent intermediate language code and the range of values of the corresponding operator stored in advance in the compiler For example, a maximum value and a minimum value).
따라서, 개발자는 타겟 플랫폼에 대응되는 플랫폼 종속적인 중간 언어 코드로의 컴파일을 거치지 않고도 해당 연산자가 포함된 구문이 특정 플랫폼에서 문제를 발생시키는지 여부를 알 수 있으며, 그 결과 프로그램을 컴파일하는데 소요되는 시간을 줄일 수 있다. Thus, the developer can know whether the syntax containing the operator causes a problem on a particular platform without compiling to the platform-dependent intermediate language code corresponding to the target platform, and as a result, Time can be reduced.
도 1은 일 실시예에 따른 중간 언어 변환 시스템을 개략적으로 나타낸 블럭 구성도,
도 2는 제 1 실시예에 따른 중간 언어 변환 시스템을 개략적으로 나타낸 블럭 구성도,
도 3은 제 2 실시예에 따른 중간 언어 변환 시스템을 개략적으로 나타낸 블럭 구성도,
도 4는 제 3 실시예에 따른 중간 언어 변환 시스템을 개략적으로 나타낸 블럭 구성도,
도 5는 제 4 실시예에 따른 중간 언어 변환 시스템을 개략적으로 나타낸 블럭 구성도,
도 6은 일 실시예에 따른 중간 언어 변환 방법을 설명하기 위한 순서도,
도 7a는 종래의 중간 언어 변환 과정을 설명하기 위한 예시도,
도 7b는 일 실시예에 따른 중간 언어 변환 과정을 설명하기 위한 예시도이다. 1 is a block diagram schematically illustrating an intermediate language conversion system according to an embodiment,
FIG. 2 is a block diagram schematically showing an intermediate language conversion system according to the first embodiment;
3 is a block diagram schematically showing an intermediate language conversion system according to the second embodiment.
4 is a block diagram schematically showing an intermediate language conversion system according to the third embodiment,
5 is a block diagram schematically showing an intermediate language conversion system according to the fourth embodiment.
6 is a flowchart illustrating an intermediate language conversion method according to an embodiment.
FIG. 7A is an exemplary diagram for explaining a conventional intermediate language conversion process, FIG.
FIG. 7B is an exemplary diagram for explaining an intermediate language conversion process according to an embodiment.
이하에서, 도면을 참조하여 본 발명의 실시예들에 대하여 상세히 살펴본다.Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings.
도 1은 일 실시예에 따른 중간 언어 변환 시스템을 개략적으로 나타낸 블럭 구성도이다.1 is a block diagram schematically illustrating an intermediate language conversion system according to an embodiment.
본 실시예에 따른 중간 언어 변환 시스템은 개발자 단말기(110), 중간 언어(intermediate language) 변환 장치(120) 및 플랫폼(130)을 포함할 수 있다. 본 실시예에서는 중간 언어 변환 시스템이 개발자 단말기(110), 중간 언어 변환 장치(120) 및 플랫폼(130)만을 포함하는 것으로 기재하고 있으나, 이는 본 발명의 일 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 중간 언어 변환 시스템에 포함되는 구성 요소에 대하여 다양한 수정 및 변형이 적용 가능함이 용이하게 이해될 것이다.The intermediate language conversion system according to the present embodiment may include a
도 1에서의 제 1 실시예에 따른 전반적인 흐름을 설명하면, 개발자 단말기(110)는 탑재된 개발자 툴을 이용하여 C 언어(C-language) 기반의 소스 파일(source file)을 생성한다. 중간 언어 변환 장치(120)는 탑재된 컴파일러(complier)를 이용하여 소스 파일을 컴파일함으로써 소스 파일을 중간 언어(intermediate language) 코드로 변환한다. 또한, 중간 언어 변환 장치(120)는 링커(linker) 프로그램으로 중간 언어 코드를 연결시켜 실행 파일을 만든다. 만들어진 실행 파일은 플랫폼(130)에서 실행될 수 있다. The overall flow according to the first embodiment of FIG. 1 will now be described. The
한편, 도 1에서의 제 2 실시예에 따른 전반적인 흐름을 설명하면, 개발자 단말기(110)는 개발자의 조작 또는 명령에 의해 작성된 C 언어 소스 코드를 읽어 들이고 전처리 과정을 수행한 후 플랫폼 독립적인 중간 언어 코드를 생성한다. 이에, 중간 언어 변환 장치(120)는 개발자 단말기(110)로부터 생성된 플랫폼 독립적인 중간 언어 코드를 읽어 들이고 이를 타겟 플랫폼(130)에 대응되는 종속적인 중간 언어 코드로 변환한다. 또한, 중간 언어 변환 장치(120)는 플랫폼 종속적인 중간 언어 코드를 플랫폼(130)에 맞는 실행 파일로 변환한다. 이에, 각 플랫폼(130)은 중간 언어 변환 장치(120)로부터 실행파일을 전송받아 구동한다.1, the
한편, 도 1에서의 제 3 실시예에 따른 전반적인 흐름을 설명하면, 개발자 단말기(110)는 개발자의 조작 또는 명령에 의해 작성된 C 언어 소스 코드를 읽어 들이고 전처리 과정을 수행한 후 플랫폼 독립적인 중간 언어 코드를 생성한다. 이에, 중간 언어 변환 장치(120)는 개발자 단말기(110)로부터 생성된 플랫폼 독립적인 중간 언어 코드를 읽어 들이고 이를 타겟 플랫폼(130)에 맞게 플랫폼 종속적인 중간 언어 코드로 변환한다. 이에, 각 플랫폼(130)은 중간 언어 변환 장치(120)로부터 플랫폼 종속적인 중간 언어 코드를 전송받고 이를 플랫폼(130)에 맞게 실행파일로 변환 후 구동한다.1, the
한편, 도 1에서의 제 4 실시예에 따른 전반적인 흐름을 설명하면, 개발자 단말기(110)는 개발자의 조작 또는 명령에 의해 작성된 C 언어 소스 코드를 읽어 들이고 전처리 과정을 수행한 후 플랫폼 독립적인 중간 언어 코드를 생성한다. 또한, 개발자 단말기(110)는 이를 타겟 플랫폼(130)에 맞게 플랫폼 독립적인 중간 언어 코드로 변환하며 또한 타겟 플랫폼(130)에 맞게 실행파일로 변환한다. 이에, 각 플랫폼(130)은 개발자 단말기(110)로부터 실행파일을 전송받아 구동한다. 본 실시예에서, 중간 언어 변환 장치(120)는 생략될 수도 있다. 1, the
이하에서 개발자 단말기(110), 중간 언어 변환 장치(120) 및 플랫폼(130)에 대해 각각 설명하도록 한다.The
개발자 단말기(110)는 사용자의 조작 또는 명령에 의해 C 언어 기반의 소스 파일을 생성할 수 있으며, 사용자의 키 조작에 따라 통신망을 경유하여 각종 데이터를 송수신할 수 있는 단말기를 말한다. 예컨대, 개발자 단말기(110)는 태블릿 PC(Tablet PC), 랩톱(Laptop), 개인용 컴퓨터(PC: Personal Computer), 스마트폰(Smart Phone), 개인휴대용 정보단말기(PDA: Personal Digital Assistant) 및 이동통신 단말기(Mobile Communication Terminal) 등 중 어느 하나일 수 있으나, 이에 한정되는 것은 아니다. The
개발자 단말기(110)는 C 언어 기반의 소스 파일을 생성할 수 있는 프로그램(program)(예컨대, 개발자 툴) 또는 프로토콜(protocol)을 저장하기 위한 메모리(memory), 해당 프로그램을 실행하여 연산 및 제어하기 위한 마이크로프로세서(microprocessor) 등을 구비할 수 있다. 또한, 개발자 단말기(110) 중간 언어 변환 장치(120)와 통신할 수 있는 단말기이며, 중간 언어 변환 장치(120)와 서버-클라이언트(server-client) 통신이 가능하다면 그 어떠한 단말기도 가능하다. 한편, 개발자 단말기(110)는 통신망을 통하여 C 언어 기반의 소스 파일을 생성할 수 있는 클라우드 컴퓨팅(cloud computing)을 지원하는 클라우드 컴퓨팅 단말기일 수도 있다. The
'C 언어'란 프로그램을 만드는 프로그램으로서, C 언어는 타 기종간의 이식성이 높고 고정적인 형식이 없으며, 퀵 베이직(Quick Basic)처럼 퀵C, 터보C 등의 처리계가 있다. 또한, 오브젝트(object) 지향적인 요소가 첨가된 C++이 개발되었는데, C++는 시스템의 저급 부분을 제어할 수 있어 사용하기 쉽고 능률적인 프로그램을 작성할 수 있는 프로그래밍 언어이다. 본 명세서에서, 'C 언어 기반의 프로그래밍 언어'란 C 언어 자체, C 언어를 확장한 객체 지향형 언어인 C++언어, C 프로그래밍 언어에 스몰토크(Smalltalk) 스타일의 메시지 구문을 추가한 객체 지향형 언어인 오브젝티브-C(Objective-C) 언어, 또는 C/C++언어에 기반하여 이를 수정 또는 변형하여 구성되는 임의의 프로그래밍 언어를 지칭한다.'C language' is a program to create a program. C language has high portability between other types and it does not have a fixed format. It has a processing system such as Quick C and Turbo C like Quick Basic. In addition, C ++ with object-oriented elements has been developed, and C ++ is a programming language that allows you to write programs that are easy to use and efficient, because you can control the lower parts of the system. In this specification, 'C language based programming language' refers to C language itself, a C ++ language that is an object-oriented language that extends C language, and an object-oriented language that adds a smalltalk- C (Objective-C) language, or a C / C ++ language.
또한, 본 명세서에서 '중간 언어 코드'란 플랫폼(130)의 CPU 종류(예컨대, x86, x64, ARM 등) 또는 운영체제의 종류(예컨대, 윈도우(Windows), 리눅스(Linux), OSX, iOS, 안드로이드(Android), 윈도우 모바일, 윈도우 폰 등)와 같은 플랫폼의 특성에 의존하지 않으며, 플랫폼에 대해 독립적인 형태의 코드를 의미한다. 즉, 중간 언어 코드는 추후 컴파일 시에 특정 플랫폼에 대응되는 바이너리(binary) 코드로 변환하여 실행하는 것이 가능하다. 예를 들어, 중간 언어 코드는 소정 규격의 가상머신(Virtual Machine; VM)에 의하여 실행될 수 있다.In this specification, the term 'intermediate language code' refers to a type of a CPU 130 (eg, x86, x64, ARM, etc.) or a type of an operating system (eg, Windows, Linux, OSX, iOS, (Android), Windows Mobile, Windows Phone, etc.) and is platform independent code. That is, the intermediate language code can be converted into a binary code corresponding to a specific platform at a later compile time and executed. For example, the intermediate language code can be executed by a virtual machine (VM) of a predetermined standard.
개발자 단말기(110)는 애플리케이션(application) 개발자 측의 플랫폼으로서, 개발자 단말기(110)에서 C 언어 기반의 프로그래밍 언어로 작성된 소스 코드(source code)의 형태의 소스 파일을 생성할 수 있다. 개발자 단말기(110)는 사용자의 조작 또는 명령에 의해 개발자 툴을 구동하며, 개발자 툴을 통해 C 언어 기반의 소스 파일을 생성할 수도 있다. 한편, 도 1에서는 개발자 단말기(110), 중간 언어 변환 장치(120) 및 플랫폼(130)이 각각 별도의 장치로 구현된 것으로 기재하고 있으나, 실제 실시예의 구현에 있어서, 개발자 단말기(110), 중간 언어 변환 장치(120) 및 플랫폼(130)을 모두 포함하는 형태의 자립형(stand alone) 장치로 구현될 수도 있다. The
제 1 실시예에 따른 개발자 단말기(110)는 개발자의 조작 또는 명령에 의해 작성된 C 언어 소스 코드를 중간 언어 변환 장치(120)로 전송한다. 한편, 제 2 실시예에 따른 개발자 단말기(110)는 개발자의 조작 또는 명령에 의해 작성된 C 언어 소스 코드를 읽어 들이고 전처리 과정을 수행한 후 플랫폼 독립적인 중간 언어 코드를 생성한다. The
제 3 실시예에 따른 개발자 단말기(110)는 개발자의 조작 또는 명령에 의해 작성된 C 언어 소스 코드를 읽어 들이고 전처리 과정을 수행한 후 플랫폼 독립적인 중간 언어 코드를 생성한다. 한편, 제 4 실시예에 따른 개발자 단말기(110)는 개발자의 조작 또는 명령에 의해 작성된 C 언어 소스 코드를 읽어 들이고 전처리 과정을 수행한 후 플랫폼 독립적인 중간 언어 코드를 생성한다. 또한, 제 4 실시예에 따른 개발자 단말기(110)는 이를 타겟 플랫폼(130)에 대응되는 플랫폼 종속적인 중간 언어 코드로 변환하며 또한 타겟 플랫폼(130)에 대응되는 실행파일로 변환한다. The
한편, 제 1 실시예에 따른 중간 언어 변환 장치(120)는 C 언어 기반의 프로그래밍 언어와 플랫폼 독립적인 중간 언어 사이의 변환 규칙이 정의되어 있는 매핑(mapping) 정보를 저장할 수 있다. 예를 들어, 중간 언어 변환 장치(120)는 C 언어의 각 지시자를 이에 대응되는 중간 언어 코드와 매칭시킨 테이블(table)의 형태의 매핑 정보를 저장할 수 있다. 즉, 중간 언어 변환 장치(120)는 이러한 매핑 정보를 이용하여, C 언어 기반의 소스 파일을 중간 언어 코드로 변환할 수 있다.Meanwhile, the intermediate
예를 들어, C 언어에서 사용하는 "int" 라는 타입(type) 지시자는 16비트(bit) 머신 플랫폼에서는 16비트 크기를 의미하는 반면 32 비트 머신 플랫폼에서는 32 비트 크기를 의미한다. 이러한 이유 때문에, C 언어를 이용하여 애플리케이션을 작성하는 경우 애플리케이션이 사용될 플랫폼의 사양에 맞추어 "int" 지시자를 사용해야 한다. 본 실시예들에서는 C 언어의 "int" 지시자가 이에 대응되는 중간 언어 코드로 변환되며, 추후 중간 언어 코드의 컴파일시에 플랫폼이 16비트 머신인지 또는 32비트 머신인지에 따라 중간 언어 코드를 적절한 비트 크기를 의미하는 바이너리 코드로 컴파일할 수 있다.For example, the type indicator "int" used in the C language means 16 bit size on a 16 bit machine platform, while 32 bit size on a 32 bit machine platform. For this reason, when writing an application using the C language, the "int" directive must be used to match the specification of the platform on which the application will be used. In the present embodiment, the "int" indicator of the C language is converted into the corresponding intermediate language code, and the intermediate language code is converted into an appropriate intermediate code according to whether the platform is a 16- You can compile with binary code that means size.
한편, 제 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, in the intermediate
제1 실시예에 따른 중간 언어 변환 장치(120)는 C 언어 기반의 소스 파일을 생성하거나, 개발자 단말기(110)로부터 C 언어 기반의 소스 파일을 수신한다. 또한, 중간 언어 변환 장치(120)는 소스 파일에 대한 전처리를 수행하며, 전처리가 수행된 소스 파일을 플랫폼 독립적인 중간 언어 코드로 변환한다. 이때, 중간 언어 변환 장치(120)는 소스 파일 내의 특정 연산자가 플랫폼에 따라 가질 수 있는 값의 범위(예컨대, 최소값 및 최대값)을 미리 저장하고 있으며, 이를 이용하여 플랫폼 독립적인 중간 언어 코드로부터 플랫폼 종속적인 문법 오류를 검출한다. 또한, 중간 언어 변환 장치(120)는 플랫폼 독립적인 중간 언어 코드를 타겟 플랫폼(130)에 종속적인 중간 언어 코드로 변하고, 이어서 실행 파일을 생성한다.The intermediate
먼저, 제1 실시예에 따른 중간 언어 변환 장치(120)에서의 전처리 과정에 대해 구체적으로 설명한다. 중간 언어 변환 장치(120)는 소스 파일에 대한 전처리를 수행할 수 있는데, 본 명세서에서 '전처리'란 컴파일 이전에 특정한 부분을 치환하는 작업을 의미한다. 예컨대, '#'으로 정의된 라인을 전처리 구문이라 하며, 전처리 구문 끝에는 명령의 끝을 의미하는 세미콜론(;)을 붙이지 않는다. 또한, 라이브러리(library)에 있는 함수들을 호출하기 위하여, 전처리 과정에서 소스 파일에 사용된 함수들의 원형을 수정하거나 정의할 수도 있다.First, the preprocessing process in the intermediate
다음으로, 제 1 실시예에 따른 중간 언어 변환 장치(120)에서의 컴파일 과정에 대해 설명한다. 중간 언어 변환 장치(120)는 전처리가 수행된 소스 파일을 플랫폼 독립적인 중간 언어 코드로 컴파일하는 독립적 컴파일 과정을 수행하며, 또한 플랫폼 독립적인 중간 언어 코드를 타겟 플랫폼(130)에 따라 플랫폼 종속적인 중간 언어 코드로 컴파일하는 종속적 컴파일 과정을 수행한다. Next, the compiling process in the intermediate
본 실시예에 기재된, '컴파일'이란 사람이 이해할 수 있는 컴퓨터언어를 기계가 이해할 수 있는 기계어로 통역해주는 과정을 말한다. 일반적으로 컴퓨터언어 프로그램이라 부르는 터보C, 볼랜드C++, 비주얼베이직 등이 컴파일러 프로그램으로, 컴퓨터언어 프로그램을 이용해서 컴퓨터 프로그램을 만든다. 이러한, 컴파일 과정은 '컴파일러'를 이용하여 수행할 수 있는데, 컴파일러는 소스 파일을 기계어로 번역해주는 프로그램을 말한다. 이러한, C 언어 컴파일러는 C 언어 문법에 맞추어서 쓴 명령어들을 컴퓨터가 이해할 수 있는 기계어로 번역해주는 프로그램이다. 즉, 컴파일러는 사람들이 알아볼 수 있도록 숫자와 문자로 명령을 기록한 내용을 기계가 이해할 수 있는 언어인 기계어로 번역해준다.The term 'compilation' described in this embodiment refers to a process of translating a computer language that a person can understand into a machine language that can understand the machine. Generally, computer language programs called Turbo C, Borland C ++, and Visual Basic are compiler programs, and computer programs are created using computer language programs. This compilation process can be performed using a 'compiler', which refers to a program that translates a source file into a machine language. Such a C language compiler is a program that translates commands written in accordance with the C language grammar into machine-readable machine language. In other words, the compiler translates machine and machine instructions into a machine-readable language that allows people to read and write commands and numbers.
이때, 제 1 실시예에 따른 중간 언어 변환 장치(120)는 독립적 컴파일 과정을 수행하기 위해 C 언어 기반의 프로그래밍 언어로 작성된 소스 파일을 플랫폼 독립적인 중간 언어 코드로 컴파일하되, 소스 파일에서 미리 결정된 특정 연산자가 플랫폼 독립적인 중간 언어 코드에서 문자열로 표현되도록 한다. 예컨대, 상기 연산자는 C 언어의 'sizeof ()' 연산자일 수 있으며, 'sizeof ()'란 괄호 안에 들어가는 변수의 크기를 바이트 단위로 계산해서 출력하는 연산자이다. 'sizeof ()' 연산자의 값은 "int" 와 같은 변수의 타입(type)에 따라 상수로 결정되는데, 이 상수는 플랫폼의 종류에 따라 상이하다. 여기서, '상수'는 한번 값을 저장하면 변경이 불가능한 값을 말하며, 변수와 마찬가지로 상수도 값을 저장할 수 있는 메모리 공간을 가지나, 변수와 다르게 데이터의 변경은 불가능하다. In order to perform the independent compilation process, the intermediate
본 실시예에서, 중간 언어 변환 장치(120)는 플랫폼 독립적인 중간 언어 코드에서 'sizeof ()' 연산자를 타겟 플랫폼(130)에 대응되는 상수로 변환하지 않고, 특정 문자열로 변환한다. 변환된 문자열은 소스 파일에서와 마찬가지로 'sizeof ()' 연산자를 그대로 기재한 것일 수도 있으며, 또는 미리 결정된 다른 특정 문자열로 대체한 것일 수도 있다. 또한, 중간 언어 변환 장치(120)에는 플랫폼에 따라 달라지는 'sizeof ()' 연산자의 값의 범위(예컨대, 최소값 및 최대값)이 미리 저장되어 있으며, 중간 언어 변환 장치(120)는 저장된 'sizeof ()' 연산자의 값의 범위를 이용하여 플랫폼 종속적인 컴파일을 수행하지 않고도 플랫폼 독립적인 중간 언어 코드로부터 플랫폼 종속적인 문법 오류를 체크할 수 있다. 이에 대해서는 상세히 후술한다. In this embodiment, the intermediate
플랫폼 독립적인 중간 언어 코드의 변환 및 문법 오류 체크가 수행된 후, 중간 언어 변환 장치(120)는 플랫폼 독립적인 중간 언어 코드를 타겟 플랫폼(130)에 대응되는 플랫폼 종속적인 중간 언어 코드로 컴파일할 수 있다. 이때, 플랫폼 독립적인 중간 언어 코드에 포함된, 'sizeof ()' 연산자에 대응되는 문자열은 타겟 플랫폼(130)의 종류에 상응되는 특정 상수로 변환된다. 또한, 중간 언어 변환 장치(120)는 컴파일된 플랫폼 종속적인 중간 언어 코드로부터 실행 파일을 생성한다. After the platform independent intermediate language code translation and grammar error checking are performed, the intermediate
제 1 실시예에 따른 중간 언어 변환 장치(120)가 적용될 여지가 많다고 여겨지는 분야에 대해 설명하면, 중간 언어 변환 장치(120)는 일종에 '애플리케이션 스토어'에 적용될 수 있다. 즉, 중간 언어 변환 장치(120)가 적용된 애플리케이션 스토어는 개발자 단말기(110)로부터 소스 파일만을 수신한 후 이를 중간 언어 코드로 변환하고, 해당 애플리케이션 스토어에 접속한 플랫폼(130)에 해당하는 형태로 컴파일한 후 해당 플랫폼(130)으로 해당 애플리케이션을 전송하여 수익을 창출할 수 있을 것이다.The intermediate
한편, 제 2 실시예에 따른 중간 언어 변환 장치(120)는 개발자 단말기(110)로부터 생성된 플랫폼 독립적인 중간 언어 코드를 읽어 들이고 이를 타겟 플랫폼(130)에 맞게 플랫폼 종속적인 중간 언어 코드로 변환한다. 또한, 중간 언어 변환 장치(120)는 플랫폼 종속적인 중간 언어 코드를 타겟 플랫폼(130)에 맞는 실행 파일로 변환한다. 한편, 제 3 실시예에 따른 중간 언어 변환 장치(120)는 개발자 단말기(110)로부터 생성된 플랫폼 독립적인 중간 언어 코드를 읽어 들이고 이를 타겟 플랫폼(130)에 맞게 플랫폼 독립적인 중간 언어 코드로 변환한다.Meanwhile, the intermediate
플랫폼(130)은 중앙처리장치의 아키텍쳐(architecture) 및 운영체제(Operating System; OS) 중 적어도 하나 이상이 조합된 장치를 말한다. 예컨대, 중앙처리장치의 아키텍처는 ARM의 ARMv5, ARMv7, ARMv8, X86 또는 X64 등이 될 수 있으며, 운영체제는 윈도우, 리눅스, 윈도우 모바일, 안드로이드, OSX 또는 iOS 등이 될 수 있으나 반드시 이에 한정되는 것은 아니다. 이러한, 플랫폼(130)이란 하나 또는 복수 개의 처리장치(예컨대, CPU 등)를 포함하는 하드웨어, 하드웨어를 이용하여 동작하는 OS, 또는 하드웨어 및 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
이하에서 제 1 내지 제 4 실시예 각각에 대하여 상세히 후술한다. 그러나, 본 발명의 범위가 후술하는 실시예들로 한정되는 것은 아니다. Each of the first to fourth embodiments will be described in detail below. However, the scope of the present invention is not limited to the following embodiments.
도 2는 제 1 실시예에 따른 중간 언어 변환 장치를 개략적으로 나타낸 블럭 구성도이다.2 is a block diagram schematically showing an intermediate language conversion apparatus according to the first 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 source
중간 언어 변환 장치(120)에 포함된 컴파일부(230)는 전처리가 수행된 소스 파일을 중간 언어 코드로 변환한다. 여기서, 소스 파일은 미리 결정된 연산자를 포함한다. 본 명세서에서는, C 언어의 연산자 중 'sizeof ()' 연산자를 기준으로 본 발명의 실시예들의 동작을 설명한다. 그러나, 이는 예시적인 것으로서, 다른 실시예에에서 실시예들의 동작은 'sizeof ()' 연산자 외에 그 결과 값이 플랫폼에 따라 상이하게 결정되는 다른 연산자를 포함한 소스 파일을 대상으로 수행될 수도 있다. The compiling
제 1 실시예에서, 컴파일부(230)는 독립적 컴파일부(232) 및 종속적 컴파일부(234)를 포함한다. 독립적 컴파일부(232)와 종속적 컴파일부(234)에 대해 각각 설명하면 다음과 같다. 독립적 컴파일부(232)는 소스 파일을 플랫폼 독립적인 중간 언어 코드로 컴파일한다. 이때, 독립적 컴파일부(232)는 소스 파일의 'sizeof ()' 연산자를 플랫폼 독립적인 중간 언어 코드에서 특정 문자열로 변환한다. 변환된 문자열은 소스 파일의 'sizeof ()' 연산자를 그대로 기재한 것일 수도 있으며, 또는 다른 미리 결정된 다른 특정 문자열일 수도 있다. In the first embodiment, the compiling
본 실시예에서, 독립적 컴파일부(232)는 문법 체크부(2320)를 포함하며, 문법 체크부(2320)에는 'sizeof ()' 연산자가 플랫폼에 따라 가질 수 있는 값의 범위, 예컨대, 최소값 및 최대값이 미리 저장되어 있다. 예를 들어, 'sizeof(int)'의 값은 16비트 머신에서는 상수 2이며, 32비트 머신에서는 상수 4이다. 이때, 문법 체크부(2320)에는 'sizeof(int)'의 최소값 2 및 최대값 4가 미리 저장되어 있을 수 있다. 플랫폼 독립적인 중간 언어 코드의 컴파일 과정에서, 문법 체크부(2320)는 미리 저장된 'sizeof()' 연산자의 최대값 및 최소값을 이용하여 플랫폼 종속적인 문법 오류를 검사한다. 즉, 플랫폼 독립적인 중간 언어 코드를 특정 플랫폼에 종속적인 중간 언어 코드로 변환하지 않고도, 소스 파일의 'sizeof()' 연산자가 사용된 구문이 어떤 종류의 플랫폼에서 오류를 일으키는지 미리 확인할 수 있다. In the present embodiment, the
종속적 컴파일부(234)는, 전술한 문법 체크부(2320)에 의한 문법 오류 체크 결과 문법 오류가 발견되지 않은 플랫폼(130)(즉, 타겟 머신)을 대상으로 하여, 플랫폼 독립적인 중간 언어 코드를 해당 플랫폼(130)에 종속적인 중간 언어 코드로 컴파일할 수 있다. 이때, 플랫폼 독립적인 중간 언어 코드에 포함된, 'sizeof()' 연산자에 대응되는 문자열은 타겟 플랫폼(130)에 따른 값을 갖는 상수로 변환된다. 예컨대, 타겟 플랫폼(130)이 16비트 머신일 경우, 'sizeof(int)'에 대응되는 문자열은 플랫폼 종속적인 중간 언어 코드에서는 상수 2로 기재될 수 있다. The
중간 언어 변환 장치(120)에 포함된 실행 파일 생성부(240)는, 컴파일된 플랫폼 종속적인 중간 언어 코드에 대응되는 대한 실행 파일을 생성한다. 또한, 플랫폼(130)에 포함된 실행 파일 구동부(250)는 실행 파일이 플랫폼(130)에서 구동되도록 한다. 실행 파일 구동부(250)는 하나 이상의 동일하거나 또는 서로 상이한 종류의 플랫폼(130)과 통신할 수 있으며, 플랫폼(130)의 CPU 또는 운영체제 정보 등과 같은 플랫폼의 프로파일을 수신할 수 있다. 실행 파일 구동부(250)에서 중간 언어 코드가 플랫폼(130)에 대응되는 실행 파일의 형태로 변환되므로, 플랫폼(130)에서는 애플리케이션을 플랫폼(130)에 최적화된 실행파일 등의 형태로 다운로드 또는 실행할 수 있다. The executable
이하에서 도 3 내지 도 5를 참조하여 설명하는 제 2 내지 제 4 실시예에서, 소스 파일 생성부(210), 전처리 수행부(232), 독립적 컴파일부(232), 종속적 컴파일부(234), 실행 파일 생성부(240) 및 실행 파일 구동부(250)의 각 구성요소는 도 2를 참조하여 전술한 제 1 실시예의 대응되는 구성요소와 동일하며, 다만 각각의 구성요소가 개발자 단말기(110), 중간 언어 변환 장치(120) 및 플랫폼(130) 중 어느 것에 포함되는지에 대해서만 차이점이 있다. 따라서, 제 2 내지 제 4 실시예는 각각의 구성요소에 의해 처리되는 데이터의 송신 및/또는 수신 주체를 중심으로 기술되며, 각각의 구성요소의 구체적인 구성은 전술한 제 1 실시예와 동일하므로 자세한 설명을 생략한다. 3 to 5, the
도 3은 제 2 실시예에 따른 중간 언어 변환 시스템을 개략적으로 나타낸 블럭 구성도이다. 3 is a block diagram schematically showing an intermediate language conversion system according to the second embodiment.
제 2 실시예에 따른 중간 언어 변환 시스템에서, 개발자 단말기(110)는 소스 파일 생성부(210), 전처리 수행부(220) 및 독립적 컴파일부(232)를 포함하며, 독립적 컴파일부(232)는 문법 체크부(2320)를 포함한다. 한편, 중간 언어 변환 장치(120)는 종속적 컴파일부(234) 및 실행 파일 생성부(240)를 포함한다. 또한, 플랫폼(130)은 실행 파일 구동부(250)를 포함한다. 제 2 실시예에서, 개발자 단말기(110), 중간 언어 변환 장치(120) 및 플랫폼(130)에 포함된 각 모듈은 제 2 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 제 2 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본질적인 특성에서 벗어나지 않는 범위에서 다양하게 수정 및 변형하여 적용 가능할 것이다.In the intermediate language conversion system according to the second embodiment, the
개발자 단말기(110)에 포함된 소스 파일 생성부(210)는 C 언어 기반의 소스 파일을 생성한다. 개발자 단말기(110)에 포함된 전처리 수행부(220)는 소스 파일에 대한 전처리를 수행한다. 개발자 단말기(110)에 포함된 독립적 컴파일부(232)는 중간 언어 코드를 플랫폼 독립적인 중간 언어 코드로 컴파일한다. 이때, 독립적 컴파일부(232)의 문법 체크부(2320)는, 미리 저장되어 있는 'sizeof ()' 연산자의 값의 범위(예컨대, 최소값 및 최대값)를 이용하여 플랫폼 독립적인 중간 언어 코드에 플랫폼 종속적인 문법 오류가 있는지 여부를 검출한다.The source
문법 체크부(2320)에 의한 체크 결과 문법 오류가 없을 경우, 중간 언어 변환 장치(120)에 포함된 종속적 컴파일부(234)는 플랫폼 독립적인 중간 언어 코드를 타겟 플랫폼(130)에 종속적인 중간 언어 코드로 컴파일한다. 또한. 중간 언어 변환 장치(120)에 포함된 실행 파일 생성부(240)는 컴파일된 플랫폼 종속적인 중간 언어 코드에 대한 실행 파일을 생성한다. 또한, 플랫폼(130)에 포함된 실행 파일 구동부(250)는 실행 파일이 플랫폼(130)에서 구동되도록 한다.If there is no grammatical error as a result of the check by the
도 4는 제 3 실시예에 따른 중간 언어 변환 시스템을 개략적으로 나타낸 블럭 구성도이다.4 is a block diagram schematically showing an intermediate language conversion system according to the third embodiment.
제 3 실시예에 따른 중간 언어 변환 시스템에서, 개발자 단말기(110)는 소스 파일 생성부(210), 전처리 수행부(220) 및 독립적 컴파일부(232)를 포함하고, 독립적 컴파일부(232)는 문법 체크부(2320)를 포함한다. 한편, 중간 언어 변환 장치(120)는 종속적 컴파일부(234)를 포함한다. 또한, 플랫폼(130)은 실행 파일 생성부(240) 및 실행 파일 구동부(250)를 포함한다. 제 3 실시예에서, 개발자 단말기(110), 중간 언어 변환 장치(120) 및 플랫폼(130)에 포함된 각 모듈은 제 3 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 제 3 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본질적인 특성에서 벗어나지 않는 범위에서 다양하게 수정 및 변형하여 적용 가능할 것이다.In the intermediate language conversion system according to the third embodiment, the
개발자 단말기(110)에 포함된 소스 파일 생성부(210)는 C 언어 기반의 소스 파일을 생성한다. 개발자 단말기(110)에 포함된 전처리 수행부(220)는 소스 파일에 대한 전처리를 수행한다. 개발자 단말기(110)에 포함된 독립적 컴파일부(232)는 중간 언어 코드를 플랫폼 독립적인 중간 언어 코드로 컴파일한다. 이때, 독립적 컴파일부(232)의 문법 체크부(2320)는, 미리 저장되어 있는 'sizeof ()' 연산자의 값의 범위(예컨대, 최소값 및 최대값)를 이용하여 플랫폼 독립적인 중간 언어 코드에 플랫폼 종속적인 문법 오류가 있는지 여부를 검출한다.The source
문법 체크부(2320)에 의한 체크 결과 문법 오류가 없을 경우, 중간 언어 변환 장치(120)에 포함된 종속적 컴파일부(234)는 플랫폼 독립적인 중간 언어 코드를 타겟 플랫폼(130)에 종속적인 중간 언어 코드로 컴파일한다. 한편, 플랫폼(130)에 포함된 실행 파일 생성부(240)는 컴파일된 플랫폼 종속적인 중간 언어 코드에 대한 실행 파일을 생성한다. 또한, 플랫폼(130)에 포함된 실행 파일 구동부(250)는 실행 파일이 플랫폼(130)에서 구동되도록 한다.If there is no grammatical error as a result of the check by the
도 5는 제 4 실시예에 따른 중간 언어 변환 시스템을 개략적으로 나타낸 블럭 구성도이다.5 is a block diagram schematically showing an intermediate language conversion system according to the fourth embodiment.
제 4 실시예에 따른 개발자 단말기(110)는 소스 파일 생성부(210), 전처리 수행부(220), 독립적 컴파일부(232), 종속적 컴파일부(234) 및 실행 파일 생성부(240)를 포함하고, 플랫폼(130)은 실행 파일 구동부(250)를 포함한다. 제 4 실시예에서, 개발자 단말기(110) 및 플랫폼(130)에 포함된 각 모듈은 제 4 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 제 4 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본질적인 특성에서 벗어나지 않는 범위에서 다양하게 수정 및 변형하여 적용 가능할 것이다.The
개발자 단말기(110)에 포함된 소스 파일 생성부(210)는 C 언어 기반의 소스 파일을 생성한다. 개발자 단말기(110)에 포함된 전처리 수행부(220)는 소스 파일에 대한 전처리를 수행한다. 개발자 단말기(110)에 포함된 독립적 컴파일부(232)는 중간 언어 코드를 플랫폼 독립적인 중간 언어 코드로 컴파일한다. 이때, 독립적 컴파일부(232)의 문법 체크부(2320)는, 미리 저장되어 있는 'sizeof ()' 연산자의 값의 범위(예컨대, 최소값 및 최대값)를 이용하여 플랫폼 독립적인 중간 언어 코드에 플랫폼 종속적인 문법 오류가 있는지 여부를 검사한다.The source
문법 체크부(2320)에 의한 체크 결과 문법 오류가 없을 경우, 마찬가지로 개발자 단말기(110)에 포함된 종속적 컴파일부(234)는 플랫폼 독립적인 중간 언어 코드를 타겟 플랫폼(130)에 종속적인 중간 언어 코드로 컴파일한다. 또한, 개발자 단말기(110)에 포함된 실행 파일 생성부(240)는 컴파일된 플랫폼 종속적인 중간 언어 코드에 대응되는 실행 파일을 생성한다. 한편, 플랫폼(130)에 포함된 실행 파일 구동부(250)는 실행 파일이 플랫폼(130)에서 구동되도록 한다.If there is no grammatical error as a result of the check by the
도 6은 일 실시예에 따른 중간 언어 변환 방법을 설명하기 위한 순서도이다.6 is a flowchart illustrating an intermediate language conversion method according to an exemplary embodiment of the present invention.
먼저, C 언어 기반의 프로그래밍 언어로 작성된 소스 파일을 생성한다(S610). 단계 S610에서 생성되는 소스 파일에는, 미리 결정된 C 언어의 특정 연산자가 포함될 수 있다. 본 실시예에서는, C 언어의 'sizeof ()' 연산자를 기준으로 중간 언어 변환 방법에 대하여 설명하나, 이에 한정되는 것은 아니다. 일 실시예에서는, 생성된 소스 파일에 대한 전처리를 수행할 수 있다(S620). 그러나, 전처리 과정(S620)은 실시예에 따라서는 생략될 수도 있다. First, a source file written in a C language-based programming language is generated (S610). The predetermined C language specific operator may be included in the source file generated in step S610. In the present embodiment, the intermediate language conversion method will be described based on the 'sizeof ()' operator of the C language, but is not limited thereto. In one embodiment, preprocessing may be performed on the generated source file (S620). However, the preprocessing process (S620) may be omitted depending on the embodiment.
생성된 소스 파일은 플랫폼 독립적인 중간 언어 코드로 컴파일된다(S630). 단계 S630에서 독립적 중간 언어 코드로의 컴파일 과정은, 미리 저장된 C 언어 기반의 프로그래밍 언어와 중간 언어 코드 사이의 매칭 정보를 이용하여 수행될 수 있다. 그 결과 애플리케이션의 소스 파일을, 특정 CPU 또는 운영 체제에 의존적이지 않은 중간 언어 코드로 변환할 수 있는 것이다. 이때, 플랫폼 독립적인 중간 언어 코드로 컴파일하는 단계(S630)는, 연산자의 값의 범위를 이용하여 문법 오류를 체크하는 단계(S640)를 포함할 수 있다.The generated source file is compiled into platform independent intermediate language code (S630). In step S630, the compiling process into the independent intermediate language code can be performed using matching information between the pre-stored C language-based programming language and the intermediate language code. As a result, the application's source files can be translated into intermediate language code that is not dependent on a particular CPU or operating system. In this case, the step S630 of compiling into the platform-independent intermediate language code may include a step S640 of checking a grammar error using the range of the value of the operator.
즉, 단계 S630에서, 소스 파일의 'sizeof ()' 연산자는 플랫폼 독립적인 중간 언어 코드에서 특정 문자열로 변환될 수 있다. 이때, 컴파일러에는 'sizeof ()' 연산자가 플랫폼에 따라 가질 수 있는 값의 범위(예컨대, 최소값 및 최대값)가 미리 저장된다. 컴파일된 플랫폼 독립적인 중간 언어 코드가 해당 문자열을 포함하는 경우, 컴파일러는 미리 저장되어 있는 'sizeof ()' 연산자의 최소값 및 최대값을 이용하여 문법 오류를 체크한다(S640). 단계 S640의 문법 체크란, 플랫폼 독립적인 중간 언어 코드에 플랫폼 종속적인 문법 오류가 있는지 여부를 검출하는 것을 지칭한다. 보다 구체적으로는, 플랫폼 독립적인 중간 언어 코드에서 해당 문자열을 타겟 플랫폼에 대응되는 상수로 변환하였을 경우 문법 오류가 발생되는 플랫폼을 결정하는 것을 의미한다. That is, in step S630, the 'sizeof ()' operator of the source file can be converted to a specific string in the platform independent intermediate language code. At this time, the compiler stores in advance a range of values (for example, a minimum value and a maximum value) that the 'sizeof ()' operator can have according to the platform. If the compiled platform-independent intermediate language code includes the string, the compiler checks the grammar error using the minimum and maximum values of the 'sizeof ()' operator (S640). The grammar check in step S640 refers to detecting whether there is a platform-dependent grammar error in the platform independent intermediate language code. More specifically, when a platform-independent intermediate language code converts a corresponding string into a constant corresponding to a target platform, it determines a platform on which a syntax error occurs.
다음으로 단계 S640에서, 플랫폼 종속적인 문법 오류가 없는 것으로 결정된 타겟 플랫폼을 대상으로 하여, 플랫폼 독립적인 중간 언어 코드를 해당 플랫폼에 종속적인 중간 언어 코드로 컴파일한다(S650). 이때, 플랫폼 독립적인 중간 언어 코드에 포함된, 'sizeof ()' 연산자에 대응되는 문자열은 플랫폼 종속적인 중간 언어 코드에서는 해당 플랫폼에 대응되는 특정 상수로 변환된다. Next, in step S640, the platform independent intermediate language code is compiled into an intermediate language code dependent on the platform, targeting the target platform determined as having no platform-dependent grammar error (S650). At this time, the string corresponding to the 'sizeof ()' operator included in the platform independent intermediate language code is converted into a specific constant corresponding to the platform in the platform-dependent intermediate language code.
다음으로, 컴파일된 플랫폼에 종속적인 중간 언어 코드에 대응되는 실행 파일을 생성한다(S660). 실행 파일은, 자동으로 또는 하나 이상의 플랫폼으로부터의 다운로드 요청에 대한 응답으로, 중간 언어 코드 형태로 되어 있는 애플리케이션을 해당 플랫폼에 대응되도록 변환함으로써 생성된다. 생성된 실행 파일은 이를 다운로드 또는 다른 방식으로 수신한 타겟 플랫폼에 의하여 구동될 수 있다(S670). Next, an executable file corresponding to the intermediate language code dependent on the compiled platform is generated (S660). An executable file is created by automatically translating an application in intermediate language code form into a corresponding platform, in response to a download request from one or more platforms. The generated executable file can be driven by the target platform that receives it or otherwise receives it (S670).
도 6에서는 단계 S610 내지 단계 S670을 순차적으로 실행하는 것으로 기재하고 있으나, 이는 본 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 도 6에 기재된 순서를 변경하여 실행하거나 단계 S610 내지 단계 S670 중 하나 이상의 단계를 병렬적으로 실행하는 것으로 다양하게 수정 및 변형하여 적용 가능할 것이므로, 도 6은 시계열적인 순서로 한정되는 것은 아니다.6, it is described that steps S610 to S670 are sequentially executed. However, this is merely an example of the technical idea of the present embodiment, and it will be understood by those skilled in the art that, It will be understood that various changes and modifications may be made to the invention without departing from the essential characteristics thereof, or alternatively, by executing one or more of the steps S610 through S670 in parallel, But is not limited thereto.
도 6에 기재된 실시예에 따른 중간 언어 변환 방법은 프로그램으로 구현되고 컴퓨터로 읽을 수 있는 기록매체에 기록될 수 있다. 본 실시예에 따른 중간 언어 변환 방법을 구현하기 위한 프로그램이 기록되고 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 이러한 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(carrier wave)(예를 들어, 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수도 있다. 또한, 본 실시예를 구현하기 위한 기능적인 프로그램, 코드 및 코드 세그먼트(segment)들은 본 실시예가 속하는 기술 분야의 통상의 기술자에 의해 용이하게 이해될 수 있을 것이다. The intermediate language conversion method according to the embodiment illustrated in FIG. 6 may be implemented by a program and recorded in a computer-readable recording medium. A program for implementing the intermediate language conversion method according to the present embodiment is recorded, and a computer-readable recording medium includes all kinds of recording devices for storing data that can be read by a computer system. Examples of the computer-readable recording medium include a ROM, a RAM, a CD-ROM, a magnetic tape, a floppy disk, an optical data storage device and the like, and also a carrier wave (for example, And the like. 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. In addition, functional programs, codes, and code segments for implementing the present embodiment may be easily understood by those skilled in the art to which this embodiment belongs.
도 7a 및 7b는 일 실시예에 따른 중간 언어 변환 과정을 종래 기술과 비교하여 설명하기 위한 예시도이다. 도 7a는 종래의 중간 언어 변환 과정을 나타내며, 도 7b는 일 실시예에 따른 중간 언어 변환 과정을 나타낸다. FIGS. 7A and 7B illustrate an intermediate language conversion process according to an embodiment of the present invention, in comparison with a conventional technology. FIG. 7A shows a conventional intermediate language conversion process, and FIG. 7B shows an intermediate language conversion process according to an embodiment.
C 언어의 'sizeof()' 연산자는 타겟 머신에 따라 그 값이 달라지는데, 종래에는 컴파일 시에 타겟 머신에 따라 해당 값이 결정되기 때문에 중간 언어 코드로 변환 시 'sizeof()' 연산자는 상수로 표현된다. 즉, 도 7a에 도시된 바와 같이, 'sizeof(int)' 연산자는 16비트 타겟 머신을 대상으로 컴파일된 중간 언어 코드에서는 2로 표현되며, 32비트 타겟 머신을 대상으로 컴파일된 중간 언어 코드에서는 4로 표현된다. 그러나, 이는 C 언어 기반의 소스 파일을 플랫폼 독립적인 중간 언어 코드로 변환하는데 문제점으로 작용한다. 즉, 종래의 컴파일러를 이용하여 'sizeof(int)' 연산자를 컴파일하는 과정에서 이를 상수로 변환(예컨대, 2 또는 4)하고, 이러한 상수로 인해 발생할 수 있는 문법 오류들을 컴파일 과정에서 체크한 후 에러가 발생되지 않는 경우 중간 언어 코드로 생성한다. 하지만, 이는 C 언어로부터 특정 플랫폼에 의존적이지 않은 독립적인 중간 언어 코드를 생성하는데 문제점으로 작용할 수 있다.Since the 'sizeof ()' operator in C differs depending on the target machine, conventionally, the value is determined according to the target machine at compilation. Therefore, when converting into intermediate language code, 'sizeof ()' operator is expressed as a constant do. That is, as shown in FIG. 7A, the 'sizeof (int)' operator is expressed as 2 in the intermediate language code compiled for the 16-bit target machine, and 4 in the intermediate language code compiled for the 32- Lt; / RTI > However, this is a problem in converting C language based source files into platform independent intermediate language codes. That is, in a process of compiling a 'sizeof (int)' operator using a conventional compiler, it is converted into a constant (for example, 2 or 4), and grammatical errors that may be caused by these constants are checked in a compilation process, If there is no occurrence, an intermediate language code is generated. However, this can cause problems in generating independent intermediate language code that is not dependent on a particular platform from the C language.
반면, 본 실시예에서는 타겟 머신에 따라 상이한 값을 갖는 'sizeof()' 연산자를 플랫폼 독립적인 중간 언어로의 컴파일 과정에서 상수가 아닌 소정의 문자열로 표현하되, 컴파일러가 미리 가지고 있는 'sizeof()' 연산자의 최소값 및 최대값을 이용하여 'sizeof()' 연산자가 특정 상수로 변환될 경우(즉, 특정 타겟 머신에 대한 종속적 컴파일될 경우) 오류가 발생하는지를 검출할 수 있다. 즉, 도 7b를 참조하면, 소스 파일의 'sizeof(int)' 연산자는 플랫폼 독립적인 중간 언어 코드에서도 'sizeof(int)' 라는 문자열로 표현되는데, 이때 컴파일러에는 'sizeof(int)'가 16비트 타겟 머신에서 최소값 2를, 32비트 타겟 머신에서 최대값 4를 갖는다는 정보가 미리 저장되어 있다. 컴파일러는 중간 언어 코드의 컴파일 과정에서 문자열 'sizeof(int)'에 최소값 및 최대값을 미리 대입하여, 'sizeof(int)'의 값이 4가 될 경우 괄호 안에 기재된 "char" 타입의 어레이(array)의 차원이 음수(3 - 4 = -1)이므로 문법 오류임을 알 수 있다. 즉, 'sizeof(int)'의 값이 4일 경우 문법 오류가 발생하는 것이므로, 플랫폼 종속적인 컴파일 과정을 거치지 않고도 'sizeof(int)'가 포함된 구문이 'sizeof(int)'의 값이 4인 플랫폼(즉, 32비트 타겟 머신)에서 오류를 발생시키는 것으로 결정할 수 있다. In the present embodiment, the 'sizeof ()' operator having a different value according to the target machine is expressed as a predetermined character string instead of a constant during compilation into a platform independent intermediate language, Operator may be used to detect whether an error occurs when the 'sizeof ()' operator is converted to a particular constant (ie, if it is compiled dependent on a particular target machine) using the minimum and maximum values of the 'operator'. 7B, the 'sizeof (int)' operator of the source file is represented by the string 'sizeof (int)' in the platform independent intermediate language code. In this case, Information indicating that the target machine has the minimum value of 2 and the maximum value of 4 in the 32-bit target machine is stored in advance. The compiler preliminarily sets the minimum and maximum values in the string 'sizeof (int)' during compilation of the intermediate language code, and if the value of 'sizeof (int)' is 4, ) Is a negative number (3 - 4 = -1), which is a grammatical error. That is, if the value of 'sizeof (int)' is 4, a syntax error occurs. Therefore, syntax without 'sizeof (int) (I.e., a 32-bit target machine).
본 실시예의 구현에 있어서, 컴파일러(예컨대, 도 2 내지 도 5의 컴파일부(230))는 'sizeof()' 연산자의 값을 변수 타입 별로 저장하며, 또한 그 값을 모든 타겟 머신 별로 저장할 수 있다. 컴파일러는 플랫폼 독립적인 중간 언어 코드로의 컴파일 과정에서 'sizeof()' 연산자가 가질 수 있는 모든 값들 중 최소값 및 최대값을 이용하여 문법 오류를 체크하며, 어느 하나의 값(즉, 타겟 머신)에 대하여 오류가 발생할 경우 'sizeof()' 연산자가 포함된 구문이 오류를 갖는 것으로 출력할 수 있다. 또는, 컴파일러는 개발자의 입력 등에 의하여 사전에 결정된 특정 종류의 타겟 머신에서 'sizeof()' 연산자가 가질 수 있는 최소값 및 최대값을 이용하여 문법 오류를 체크하고, 특정된 종류의 타겟 머신 중에서 문법 오류가 발생하는 것만을 체크할 수도 있다. In the implementation of this embodiment, a compiler (e.g., the
이상에서 설명한 본 발명의 실시예들에 의하면, 개발자는 타겟 머신이 정하여 지지 않은 플랫폼 독립적인 중간 언어 코드로의 컴파일 과정에서 문법 오류를 체크할 수 있으며, 플랫폼 독립적인 중간 언어 코드가 향후 변환될 수 있는 모든 종류의 타겟 머신을 고려하여 에러가 발생할 수 있는 코드를 미리 찾을 수 있다. 따라서, 개발자는 플랫폼 종속적인 중간 언어 코드로의 변환을 거치지 않고도 특정 연산자로부터 발생할 수 있는 플랫폼 종속적인 문법 오류를 체크할 수 있어, 프로그램을 컴파일하는데 소요되는 시간을 감소시킬 수 있는 이점이 있다. According to the embodiments of the present invention described above, the developer can check grammatical errors during compilation into a platform independent intermediate language code that is not defined by the target machine, and the platform independent intermediate language code can be converted Consider all possible types of target machines, and you can find code that can cause errors. Thus, a developer can check for platform-dependent syntax errors that may arise from a particular operator without having to convert to platform-dependent intermediate language code, thereby reducing the time required to compile the program.
이상에서 살펴본 본 발명은 도면에 도시된 실시예들을 참고로 하여 설명하였으나 이는 예시적인 것에 불과하며 당해 분야에서 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 실시예의 변형이 가능하다는 점을 이해할 것이다. 그러나, 이와 같은 변형은 본 발명의 기술적 보호범위 내에 있다고 보아야 한다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해서 정해져야 할 것이다.While the invention has been shown and described with reference to certain embodiments thereof, it will be understood by those skilled in the art that various changes and modifications may be made therein without departing from the spirit and scope of the invention as defined by the appended claims. However, it should be understood that such modifications are within the technical scope of the present invention. Accordingly, the true scope of the present invention should be determined by the technical idea of the appended claims.
Claims (15)
상기 소스 파일을, 상기 연산자에 대응되는 문자열을 포함하는 플랫폼 독립적인 중간 언어 코드로 변환하는 단계; 및
상기 연산자에 대해 미리 결정된 값의 범위를 이용하여, 상기 플랫폼 독립적인 중간 언어 코드로부터 플랫폼 종속적인 문법 오류를 검출하는 단계를 포함하는 것을 특징으로 하는 중간 언어 변환 방법.
Generating a C language based source file including a predetermined operator;
Converting the source file into platform independent intermediate language code including a string corresponding to the operator; And
Detecting a platform dependent grammar error from the platform independent intermediate language code using a predetermined range of values for the operator.
상기 연산자에 대해 미리 결정된 값의 범위는, 타겟 플랫폼에 따라 상기 연산자가 가질 수 있는 값들 중 최소값 및 최대값을 포함하는 것을 특징으로 하는 중간 언어 변환 방법.
The method according to claim 1,
Wherein a range of a predetermined value for the operator includes a minimum value and a maximum value of values that the operator can have according to the target platform.
상기 플랫폼 종속적인 문법 오류를 검출하는 단계는, 상기 플랫폼 독립적인 중간 언어 코드에서 상기 문자열을 상기 최소값 또는 상기 최대값으로 변환하였을 경우 오류가 발생하는지 여부를 결정하는 단계를 포함하는 것을 특징으로 하는 중간 언어 변환 방법.
3. The method of claim 2,
Wherein detecting the platform dependent grammar error comprises determining whether an error occurs if the string is converted to the minimum value or the maximum value in the platform independent intermediate language code. Language conversion method.
상기 플랫폼 독립적인 중간 언어 코드를, 문법 오류가 검출되지 않은 타겟 플랫폼에 대응되는 플랫폼 종속적인 중간 언어 코드로 변환하는 단계를 더 포함하는 것을 특징으로 하는 중간 언어 변환 방법.
The method of claim 3,
Further comprising the step of translating the platform independent intermediate language code into platform dependent intermediate language code corresponding to a target platform for which no grammar errors have been detected.
상기 플랫폼 종속적인 중간 언어 코드를, 문법 오류가 검출되지 않은 타겟 플랫폼에 대응되는 실행 파일로 변환하는 단계를 더 포함하는 것을 특징으로 하는 중간 언어 변환 방법.
5. The method of claim 4,
Further comprising the step of translating the platform dependent intermediate language code into an executable file corresponding to a target platform for which no grammar error has been detected.
상기 플랫폼 독립적인 중간 언어 코드에서, 상기 연산자에 대응되는 문자열은 상기 연산자와 동일한 것을 특징으로 하는 중간 언어 변환 방법.
The method according to claim 1,
Wherein in the platform independent intermediate language code, the string corresponding to the operator is the same as the operator.
상기 미리 결정된 연산자는 'sizeof ()'인 것을 특징으로 하는 중간 언어 변환 방법.
The method according to claim 1,
Wherein the predetermined operator is 'sizeof ()'.
상기 소스 파일을, 상기 연산자에 대응되는 문자열을 포함하는 플랫폼 독립적인 중간 언어 코드로 변환하는 독립적 컴파일부를 포함하되,
상기 독립적 컴파일부는,
상기 연산자에 대해 미리 결정된 값의 범위를 이용하여, 상기 플랫폼 독립적인 중간 언어 코드로부터 플랫폼 종속적인 문법 오류를 검출하는 문법 체크부를 포함하는 것을 특징으로 하는 중간 언어 변환 시스템.
A source file generation unit for generating a C language based source file including a predetermined operator; And
And an independent compiler for converting the source file into platform independent intermediate language code including a string corresponding to the operator,
The independent compiling unit,
And a grammar checker for detecting a platform-dependent grammar error from the platform independent intermediate language code using a predetermined range of values for the operator.
상기 연산자에 대해 미리 결정된 값의 범위는, 타겟 플랫폼에 따라 상기 연산자가 가질 수 있는 값들 중 최소값 및 최대값을 포함하는 것을 특징으로 하는 중간 언어 변환 시스템.
9. The method of claim 8,
Wherein the predetermined range of values for the operator includes a minimum value and a maximum value of values that the operator can have according to the target platform.
상기 문법 체크부는, 상기 플랫폼 독립적인 중간 언어 코드에서 상기 문자열을 상기 최소값 또는 상기 최대값으로 변환하였을 경우 오류가 발생하는지 여부를 결정하도록 구성된 것을 특징으로 하는 중간 언어 변환 시스템.
9. The method of claim 8,
Wherein the grammar checker is configured to determine whether an error occurs when the character string is converted into the minimum value or the maximum value in the platform independent intermediate language code.
상기 플랫폼 독립적인 중간 언어 코드를, 문법 오류가 검출되지 않은 타겟 플랫폼에 대응되는 플랫폼 종속적인 중간 언어 코드로 변환하는 종속적 컴파일부를 더 포함하는 것을 특징으로 하는 중간 언어 변환 시스템.
11. The method of claim 10,
Further comprising a dependent compiling unit for converting said platform independent intermediate language code into platform dependent intermediate language code corresponding to a target platform for which no grammar error has been detected.
상기 플랫폼 종속적인 중간 언어 코드를, 문법 오류가 검출되지 않은 타겟 플랫폼에 대응되는 실행 파일로 변환하는 실행파일 생성부를 더 포함하는 것을 특징으로 하는 중간 언어 변환 시스템.
12. The method of claim 11,
Further comprising an executable file generation unit for converting the platform dependent intermediate language code into an executable file corresponding to a target platform for which no grammar error is detected.
상기 플랫폼 독립적인 중간 언어 코드에서, 상기 연산자에 대응되는 문자열은 상기 연산자와 동일한 것을 특징으로 하는 중간 언어 변환 시스템.
9. The method of claim 8,
Wherein in the platform independent intermediate language code, the character string corresponding to the operator is the same as the operator.
상기 미리 결정된 연산자는 'sizeof ()'인 것을 특징으로 하는 중간 언어 변환 시스템.
9. The method of claim 8,
Wherein the predetermined operator is 'sizeof ()'.
미리 결정된 연산자를 포함하는, C 언어 기반의 소스 파일을 생성하는 단계;
상기 소스 파일을, 상기 연산자에 대응되는 문자열을 포함하는 플랫폼 독립적인 중간 언어 코드로 변환하는 단계; 및
상기 연산자에 대해 미리 결정된 값의 범위를 이용하여, 상기 플랫폼 독립적인 중간 언어 코드로부터 플랫폼 종속적인 문법 오류를 검출하는 단계를 수행하도록 상기 데이터 처리 기기를 제어하기 위한 프로그램이 기록된 컴퓨터로 판독 가능한 기록매체.A data processing device,
Generating a C language based source file including a predetermined operator;
Converting the source file into platform independent intermediate language code including a string corresponding to the operator; And
Readable record in which a program for controlling said data processing device to perform a step of detecting a platform dependent grammar error from said platform independent intermediate language code using a range of predetermined values for said operator media.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130023270A KR101449657B1 (en) | 2013-03-05 | 2013-03-05 | Method for transforming intermediate language using range of values of operator, system and computer-readable recording medium with program therefor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130023270A KR101449657B1 (en) | 2013-03-05 | 2013-03-05 | Method for transforming intermediate language using range of values of operator, system and computer-readable recording medium with program therefor |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140109066A true KR20140109066A (en) | 2014-09-15 |
KR101449657B1 KR101449657B1 (en) | 2014-10-13 |
Family
ID=51755868
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020130023270A KR101449657B1 (en) | 2013-03-05 | 2013-03-05 | Method for transforming intermediate language using range of values of operator, system and computer-readable recording medium with program therefor |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101449657B1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113703779A (en) * | 2021-09-06 | 2021-11-26 | 武汉市字节码科技有限公司 | Cross-platform multi-language compiling method and ultra-light Internet of things virtual machine |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5748966A (en) * | 1994-12-30 | 1998-05-05 | The Trustees Of The University Of Pennsylvania | Type error checker for type-free or polymorphic computer language |
JPWO2008072334A1 (en) * | 2006-12-14 | 2010-03-25 | 富士通株式会社 | Compiling method and compiler |
KR101142322B1 (en) * | 2009-03-31 | 2012-05-17 | (재)국토연구원 | ASN.1 Compiler |
KR101242479B1 (en) * | 2011-07-01 | 2013-03-18 | 한국과학기술연구원 | System and Method for Providing Application |
-
2013
- 2013-03-05 KR KR1020130023270A patent/KR101449657B1/en active IP Right Grant
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113703779A (en) * | 2021-09-06 | 2021-11-26 | 武汉市字节码科技有限公司 | Cross-platform multi-language compiling method and ultra-light Internet of things virtual machine |
CN113703779B (en) * | 2021-09-06 | 2024-04-16 | 王喆 | Cross-platform multi-language compiling method and ultra-light Internet of things virtual machine |
Also Published As
Publication number | Publication date |
---|---|
KR101449657B1 (en) | 2014-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9134966B2 (en) | Management of mixed programming languages for a simulation environment | |
JP6122493B2 (en) | Adaptively portable library | |
CN110096338A (en) | Intelligent contract executes method, apparatus, equipment and medium | |
US20140123119A1 (en) | Cobol to bytecode translation | |
US9928042B2 (en) | Automatic classification of compilers | |
EP2754044A2 (en) | Profile guided jit code generation | |
US6934940B2 (en) | Source code transformation-temporary object reduction | |
CN104134039A (en) | Virus checking and killing method, virus checking and killing client, virus checking and killing server and virus checking and killing system | |
US20060070043A1 (en) | System and method for analyzing computer code | |
US11599478B2 (en) | Reduced instructions to generate global variable addresses | |
US9672015B2 (en) | Automatic determination of compiler configuration | |
KR101349631B1 (en) | Method For Transforming Intermediate Language, System And Computer-Readable Recording Medium with Program Therefor | |
US6895579B2 (en) | Method and apparatus for maintaining exception reporting for register promotion | |
KR20200071413A (en) | Machine learning data generating apparatus, apparatus and method for analyzing errors in source code | |
KR101449657B1 (en) | Method for transforming intermediate language using range of values of operator, system and computer-readable recording medium with program therefor | |
US20170083298A1 (en) | Resilient format for distribution of ahead-of-time compiled code components | |
KR101277145B1 (en) | Method For Transforming Intermediate Language by Using Common Representation, System And Computer-Readable Recording Medium with Program Therefor | |
KR102341137B1 (en) | Code converting method based on intermediate language and electronic device including the same | |
KR101349628B1 (en) | Method For Transforming Intermediate Language by Using Operator, System And Computer-Readable Recording Medium with Program Therefor | |
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 | |
WO2022068559A1 (en) | Code processing method and apparatus, and device | |
CN115545136B (en) | Method for managing RAID card in domestic processor platform firmware | |
JP2023057721A (en) | Verification program, verification method, and information processing device | |
US20240134666A1 (en) | Hybrid just in time load module compiler with performance optimizations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20170928 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20181001 Year of fee payment: 5 |