KR102147355B1 - 프로그램 변환 방법 및 장치 - Google Patents
프로그램 변환 방법 및 장치 Download PDFInfo
- Publication number
- KR102147355B1 KR102147355B1 KR1020130115718A KR20130115718A KR102147355B1 KR 102147355 B1 KR102147355 B1 KR 102147355B1 KR 1020130115718 A KR1020130115718 A KR 1020130115718A KR 20130115718 A KR20130115718 A KR 20130115718A KR 102147355 B1 KR102147355 B1 KR 102147355B1
- Authority
- KR
- South Korea
- Prior art keywords
- statement
- loop
- program
- conditional expression
- branch
- 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/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- 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/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
- G06F8/4443—Inlining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
본 발명의 실시예는 컴퓨터 프로그램이 실행되는 속도를 향상시킬 수 있는 프로그램 변환 방법 및 장치에 관한 것으로서, 프로그램을 수신하는 단계, 프로그램 내에서 적어도 하나 이상의 분기문이 포함된 적어도 하나 이상의 반복문을 검출하는 단계, 반복문과 서로 동일한 기능을 수행하고 분기문이 제거된 적어도 하나 이상의 서브 반복문(sub-loop statement)으로 반복문이 분할될 수 있는지 여부를 판정하는 단계, 판정 결과 반복문이 분할될 수 있다고 판정된 경우 반복문을 서브 반복문으로 분할하고 반복문에 포함된 분기문을 제거하는 단계, 및 분기문이 제거된 결과를 출력하는 단계를 포함하는 프로그램 변환 방법을 제공할 수 있다.
Description
본 발명의 실시예는 프로그램 변환 방법 및 장치에 관한 것으로서, 보다 상세하게는 컴퓨터 프로그램이 실행되는 속도를 향상시킬 수 있는 프로그램 변환 방법 및 장치에 관한 것이다.
컴퓨터 프로그램은 프로그래밍 언어로 작성될 수 있다. 일반적으로 컴퓨터 프로그램은 프로그래머에 의해 C언어 등의 고급언어로 작성될 수 있다. 고급언어로 작성된 컴퓨터 프로그램이 실제로 컴퓨터 등의 프로그램 실행 장치에서 실행될 수 있도록 하기 위해서는, 상기 컴퓨터 프로그램을 컴퓨터가 직접 이해할 수 있는 저급언어로 변환해주어야 하는 과정이 필요할 수 있다.
프로그램 실행 장치는 처리 장치를 포함할 수 있다. 처리 장치는 예를 들어, 중앙 처리 장치(Central Processing Unit, CPU), 그래픽 처리 장치(Graphics Processing Unit, GPU), 마이크로컨트롤러유닛(Micro Controller Unit, MCU), 또는 기타 유사한 처리 장치 중에서 어느 하나일 수 있다.
상기와 같은 처리 장치들은 특정한 명령어 세트(instruction set)에 포함된 명령어(instruction)들을 이해하고 실행시킬 수 있다. 따라서, 고급언어로 작성된 컴퓨터 프로그램은 상기와 같은 명령어로 이루어진 컴퓨터 프로그램으로 변환될 필요가 있다. 상기와 같은 변환을 수행하는 프로그램은 통상적으로 컴파일러(compiler)라고 불린다.
또한, 동일한 컴퓨터 프로그램이라고 하더라도 어떤 컴파일러를 이용하여 변환하였는지에 따라서 컴파일된 결과물, 다시 말해서, 컴파일된 프로그램은 서로 다를 수 있다. 동일한 기능을 수행하는 프로그램이라고 하더라도 프로그램의 길이가 서로 다를 수도 있고, 상기 프로그램에 포함된 명령어의 개수가 서로 다를 수도 있다.
일반적으로, 동일한 기능을 수행하는 적어도 하나 이상의 변환된 프로그램 중에서, 실행되는 시간이 더 짧은 프로그램이 더 우수한 프로그램이라고 평가되고 있다. 따라서, 컴퓨터 프로그램을, 실행되는 시간이 가장 짧은 프로그램으로 변환할 수 있는 컴파일러가 가장 우수한 컴파일러라고 평가될 수 있다.
또한, 고급언어로 작성된 컴퓨터 프로그램이 저급언어의 컴퓨터 프로그램으로 변환되는 과정은 적어도 하나 이상의 단계가 포함될 수 있다. 예를 들어, 고급언어로 작성된 컴퓨터 프로그램은 고급언어로 작성된 다른 컴퓨터 프로그램으로 적어도 한 번 이상 변환될 수 있다. 또한, 상기 변환된 컴퓨터 프로그램은 중급언어로 작성된 컴퓨터 프로그램으로 적어도 한 번 이상 변환될 수 있다. 또한, 상기 변환된 컴퓨터 프로그램은 저급언어로 작성된 컴퓨터 프로그램으로 적어도 한 번 이상 변환될 수 있다.
상기와 같이 적어도 하나 이상의 단계가 수행됨으로써, 고급언어로 작성된 컴퓨터 프로그램은 실행되는 시간이 가장 짧은 최적화된 컴퓨터 프로그램으로 변환될 수 있다.
본 발명의 실시예는 컴퓨터 프로그램이 실행되는 속도를 향상시킬 수 있는 프로그램 변환 방법 및 장치를 제공할 수 있다.
본 발명의 실시예는 컴퓨터 프로그램을 실행되는 속도가 향상된 컴퓨터 프로그램으로 변환할 수 있는 프로그램 변환 방법 및 장치를 제공할 수 있다.
본 발명의 실시예는 분기문을 포함한 컴퓨터 프로그램을 상기 컴퓨터 프로그램과 동일한 기능을 수행하고 상기 분기문이 제거된 컴퓨터 프로그램으로 변환할 수 있는 프로그램 변환 방법 및 장치를 제공할 수 있다.
본 발명의 실시예는 분기문(branch statement)이 포함된 반복문(loop statement)을 상기 반복문과 동일한 기능을 수행하고 상기 분기문이 제거된 반복문으로 변환할 수 있는 프로그램 변환 방법 및 장치를 제공할 수 있다.
본 발명의 실시예는 분기문이 포함된 반복문을 상기 반복문과 동일한 기능을 수행하는 적어도 하나 이상의 반복문으로 변환할 수 있는 프로그램 변환 방법 및 장치를 제공할 수 있다.
본 발명의 실시예는 분기문을 포함한 컴퓨터 프로그램을 상기 컴퓨터 프로그램과 동일한 기능을 수행하고 상기 분기문이 제거된 컴퓨터 프로그램으로 보다 신속하게 변환할 수 있는 프로그램 변환 방법 및 장치를 제공할 수 있다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해 될 수 있을 것이다.
본 발명의 실시예에 따른 프로그램 변환 방법은, 프로그램을 수신하는 단계, 상기 프로그램 내에서 적어도 하나 이상의 분기문이 포함된 적어도 하나 이상의 반복문을 검출하는 단계, 상기 반복문과 서로 동일한 기능을 수행하고 상기 분기문이 제거된 적어도 하나 이상의 서브 반복문(sub-loop statement)으로 상기 반복문이 분할될 수 있는지 여부를 판정하는 단계, 상기 판정 결과 상기 반복문이 분할될 수 있다고 판정된 경우 상기 반복문을 상기 서브 반복문으로 분할하고 상기 반복문에 포함된 상기 분기문을 제거하는 단계, 및 상기 분기문이 제거된 결과를 출력하는 단계를 포함할 수 있다.
또한, 상기 반복문이 분할될 수 있는지 여부를 판정하는 단계는, 상기 분기문에 포함된 조건식이 상기 반복문의 반복 변수(iteration variable)의 값을 변경시키지 않는 경우 상기 반복문이 분할될 수 있다고 판정하는 단계를 포함할 수 있다.
또한, 상기 반복문이 분할될 수 있는지 여부를 판정하는 단계는, 상기 분기문에 포함된 조건식이 상기 반복문의 반복 변수(iteration variable)의 값을 변경시키는 경우 상기 반복문이 분할될 수 없다고 판정하는 단계를 포함할 수 있다.
또한, 상기 반복문이 분할될 수 있는지 여부를 판정하는 단계는, 분할 정보 테이블에서 상기 분기문에 포함된 상기 조건식을 조회하는 단계, 상기 조회 결과 상기 조건식이 상기 분할 정보 테이블에 존재하지 않는 경우, 상기 반복문은 분할될 수 없다고 판정하는 단계, 상기 조회 결과 상기 조건식이 상기 분할 정보 테이블에 존재하는 경우, 상기 분할 정보 테이블로부터 상기 조건식에 대응하는 분할 가능성 정보를 수신하는 단계, 및 상기 수신된 분할 가능성 정보를 이용하여 상기 반복문이 분할될 수 있는지 여부를 판정하는 단계를 포함할 수 있다.
또한, 상기 분할 정보 테이블은 상기 조건식, 상기 조건식에 대응하는 상기 분할 가능성 정보 및 상기 조건식에 대응하는 분할 정보 중에서 적어도 하나 이상을 포함할 수 있다.
또한, 상기 분할 정보는 상기 반복문에 대응하는 상기 서브 반복문에 대한 정보를 포함할 수 있다.
또한, 상기 반복문이 분할될 수 있는지 여부를 판정하는 단계는, 분할 정보 테이블에서 상기 분기문에 포함된 상기 조건식을 조회하는 단계, 상기 조회 결과 상기 조건식이 상기 분할 정보 테이블에 존재하지 않는 경우, 상기 반복문은 분할될 수 없다고 판정하는 단계, 및 상기 조회 결과 상기 조건식이 상기 분할 정보 테이블에 존재하는 경우, 상기 반복문은 분할될 수 있다고 판정하는 단계를 포함할 수 있다.
또한, 상기 분할 정보 테이블은 상기 조건식 및 상기 조건식에 대응하는 분할 정보 중에서 적어도 하나 이상을 포함할 수 있다.
또한, 상기 반복문을 상기 서브 반복문으로 분할하고 상기 반복문에 포함된 상기 분기문을 제거하는 단계는, 상기 분할 정보 테이블로부터 상기 조건식에 대응하는 분할 정보를 수신하는 단계, 및 상기 수신된 분할 정보를 이용하여 상기 반복문을 상기 서브 반복문으로 분할하고 상기 반복문에 포함된 상기 분기문을 제거하는 단계를 포함할 수 있다.
또한, 상기 프로그램 변환 방법은, 상기 반복문을 상기 서브 반복문으로 분할하고 상기 반복문에 포함된 상기 분기문을 제거하는 단계 이후에, 상기 판정 결과 상기 반복문이 분할될 수 없다고 판정된 경우 하이퍼블로킹(hyperblocking) 방법을 이용하여 상기 반복문에 포함된 상기 분기문을 제거하는 단계를 더 포함할 수 있다.
또한, 상기 프로그램 변환 방법은, 상기 분기문이 포함된 상기 반복문을 검출하는 단계 이후에, 상기 검출된 반복문에 포함된 상기 분기문에 포함된 조건식(condition expression)에 적어도 하나 이상의 함수가 포함된 경우 상기 함수의 반환값을 획득하는 단계를 더 포함할 수 있다.
본 발명의 실시예에 따른 프로그램 변환 장치는, 프로그램을 수신하는 프로그램 입력부, 상기 프로그램 내에서 적어도 하나 이상의 분기문이 포함된 적어도 하나 이상의 반복문을 검출하고, 상기 반복문과 서로 동일한 기능을 수행하고 상기 분기문이 제거된 적어도 하나 이상의 서브 반복문(sub-loop statement)으로 상기 반복문이 분할될 수 있는지 여부를 판정하고, 상기 판정 결과 상기 반복문이 분할될 수 있다고 판정된 경우 상기 반복문을 상기 서브 반복문으로 분할하고 상기 반복문에 포함된 상기 분기문을 제거하는 프로그램 변환부, 및 상기 분기문이 제거된 결과를 출력하는 프로그램 출력부를 포함할 수 있다.
또한, 상기 프로그램 변환부는 상기 분기문에 포함된 조건식이 상기 반복문의 반복 변수(iteration variable)의 값을 변경시키지 않는 경우 상기 반복문이 분할될 수 있다고 판정할 수 있다.
또한, 상기 프로그램 변환부는 상기 분기문에 포함된 조건식이 상기 반복문의 반복 변수(iteration variable)의 값을 변경시키는 경우 상기 반복문이 분할될 수 없다고 판정할 수 있다.
또한, 상기 프로그램 변환부는 분할 정보 테이블에서 상기 분기문에 포함된 상기 조건식을 조회하고, 상기 프로그램 변환부는 상기 조회 결과 상기 조건식이 상기 분할 정보 테이블에 존재하지 않는 경우 상기 반복문은 분할될 수 없다고 판정하고, 상기 프로그램 변환부는 상기 조회 결과 상기 조건식이 상기 분할 정보 테이블에 존재하는 경우 상기 분할 정보 테이블로부터 상기 조건식에 대응하는 분할 가능성 정보를 수신하고, 상기 프로그램 변환부는 상기 수신된 분할 가능성 정보를 이용하여 상기 반복문이 분할될 수 있는지 여부를 판정할 수 있다.
또한, 상기 프로그램 변환부는 분할 정보 테이블에서 상기 분기문에 포함된 상기 조건식을 조회하고, 상기 프로그램 변환부는 상기 조회 결과 상기 조건식이 상기 분할 정보 테이블에 존재하지 않는 경우, 상기 반복문은 분할될 수 없다고 판정하고, 상기 프로그램 변환부는 상기 조회 결과 상기 조건식이 상기 분할 정보 테이블에 존재하는 경우, 상기 반복문은 분할될 수 있다고 판정할 수 있다.
또한, 상기 프로그램 변환부는 상기 분할 정보 테이블로부터 상기 조건식에 대응하는 분할 정보를 수신하고, 상기 프로그램 변환부는 상기 수신된 분할 정보를 이용하여 상기 반복문을 상기 서브 반복문으로 분할하고 상기 반복문에 포함된 상기 분기문을 제거할 수 있다.
또한, 상기 분할 정보는 상기 반복문에 대응하는 상기 서브 반복문에 대한 정보를 포함할 수 있다.
또한, 상기 프로그램 변환부는 상기 판정 결과 상기 반복문이 분할될 수 없다고 판정된 경우 하이퍼블로킹(hyperblocking) 방법을 이용하여 상기 반복문에 포함된 상기 분기문을 제거할 수 있다.
또한, 상기 프로그램 변환부는 상기 검출된 반복문에 포함된 상기 분기문에 포함된 조건식(condition expression)에 적어도 하나 이상의 함수가 포함된 경우 상기 함수의 반환값을 획득할 수 있다.
본 발명의 실시예에 따르면 컴퓨터 프로그램이 실행되는 속도를 향상시킬 수 있다.
본 발명의 실시예에 따르면 컴퓨터 프로그램을 실행되는 속도가 향상된 컴퓨터 프로그램으로 변환할 수 있다.
본 발명의 실시예에 따르면 분기문을 포함한 컴퓨터 프로그램을 상기 컴퓨터 프로그램과 동일한 기능을 수행하고 상기 분기문이 제거된 컴퓨터 프로그램으로 변환할 수 있다.
본 발명의 실시예에 따르면 분기문(branch statement)이 포함된 반복문(loop statement)을 상기 반복문과 동일한 기능을 수행하고 상기 분기문이 제거된 반복문으로 변환할 수 있다.
본 발명의 실시예에 따르면 분기문이 포함된 반복문을 상기 반복문과 동일한 기능을 수행하는 적어도 하나 이상의 반복문으로 변환할 수 있다.
본 발명의 실시예에 따르면 분기문을 포함한 컴퓨터 프로그램을 상기 컴퓨터 프로그램과 동일한 기능을 수행하고 상기 분기문이 제거된 컴퓨터 프로그램으로 보다 신속하게 변환할 수 있다.
본 발명의 실시예에 따르면 분기문을 포함한 컴퓨터 프로그램을 상기 컴퓨터 프로그램과 동일한 기능을 수행하고 상기 분기문이 제거된 컴퓨터 프로그램으로 보다 신속하게 변환할 수 있다.
도 1은 본 발명의 실시예에 따른 프로그램 변환 방법이 수행되는 과정을 나타내는 순서도이다.
도 2는 본 발명의 실시예에 따라 수신된 프로그램의 내용을 나타내는 프로그램 코드(program code)이다.
도 3은 본 발명의 다른 실시예에 따라 수신된 프로그램의 내용을 나타내는 프로그램 코드이다.
도 4는 본 발명의 실시예에 따른 반복문이 분할될 수 있는지 여부가 판정되는 단계가 수행되는 과정을 나타내는 순서도이다.
도 5는 본 발명의 실시예에 따른 분할 정보 테이블의 내용을 나타내는 표이다.
도 6은 본 발명의 또 다른 실시예에 따라 수신된 프로그램의 내용을 나타내는 프로그램 코드이다.
도 7은 본 발명의 또 다른 실시예에 따른 반복문의 분할 가능 여부가 판정되는 단계가 수행되는 과정을 나타내는 순서도이다.
도 8은 본 발명의 또 다른 실시예에 따른 분할 정보 테이블의 내용을 나타내는 표이다.
도 9는 본 발명의 실시예에 따른 프로그램에 포함된 분기문이 제거되고 반복문이 분할되는 단계가 수행되는 과정을 나타내는 순서도이다.
도 10은 본 발명의 실시예에 따라 프로그램에 포함된 분기문이 제거되고 반복문이 분할된 결과를 나타내는 프로그램 코드이다.
도 11은 본 발명의 실시예에 따라 프로그램에 포함된 분기문이 하이퍼블로킹(hyperblocking) 방법을 이용하여 제거된 결과를 나타내는 프로그램 코드이다.
도 12는 본 발명의 실시예에 따른 프로그램 변환 장치의 구성을 나타내는 블록도이다.
도 2는 본 발명의 실시예에 따라 수신된 프로그램의 내용을 나타내는 프로그램 코드(program code)이다.
도 3은 본 발명의 다른 실시예에 따라 수신된 프로그램의 내용을 나타내는 프로그램 코드이다.
도 4는 본 발명의 실시예에 따른 반복문이 분할될 수 있는지 여부가 판정되는 단계가 수행되는 과정을 나타내는 순서도이다.
도 5는 본 발명의 실시예에 따른 분할 정보 테이블의 내용을 나타내는 표이다.
도 6은 본 발명의 또 다른 실시예에 따라 수신된 프로그램의 내용을 나타내는 프로그램 코드이다.
도 7은 본 발명의 또 다른 실시예에 따른 반복문의 분할 가능 여부가 판정되는 단계가 수행되는 과정을 나타내는 순서도이다.
도 8은 본 발명의 또 다른 실시예에 따른 분할 정보 테이블의 내용을 나타내는 표이다.
도 9는 본 발명의 실시예에 따른 프로그램에 포함된 분기문이 제거되고 반복문이 분할되는 단계가 수행되는 과정을 나타내는 순서도이다.
도 10은 본 발명의 실시예에 따라 프로그램에 포함된 분기문이 제거되고 반복문이 분할된 결과를 나타내는 프로그램 코드이다.
도 11은 본 발명의 실시예에 따라 프로그램에 포함된 분기문이 하이퍼블로킹(hyperblocking) 방법을 이용하여 제거된 결과를 나타내는 프로그램 코드이다.
도 12는 본 발명의 실시예에 따른 프로그램 변환 장치의 구성을 나타내는 블록도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
비록 "제1" 또는 "제2" 등이 다양한 구성요소를 서술하기 위해서 사용되나, 이러한 구성요소는 상기와 같은 용어에 의해 제한되지 않는다. 상기와 같은 용어는 단지 하나의 구성요소를 다른 구성요소와 구별하기 위하여 사용될 수 있다. 따라서, 이하에서 언급되는 제1구성요소는 본 발명의 기술적 사상 내에서 제2구성요소일 수도 있다.
본 명세서에서 사용된 용어는 실시예를 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 또는 "포함하는(comprising)"은 언급된 구성요소 또는 단계가 하나 이상의 다른 구성요소 또는 단계의 존재 또는 추가를 배제하지 않는다는 의미를 내포한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 해석될 수 있다. 또한, 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
이하에서는, 도 1 내지 도 12을 참조하여 본 발명의 실시예에 따른 프로그램 변환 방법 및 프로그램 변환 장치(100)에 대해 상세히 설명하기로 한다.
도 1은 본 발명의 실시예에 따른 프로그램 변환 방법이 수행되는 과정을 나타내는 순서도이다. 도 1을 참조하면, 본 발명의 실시예에 따른 프로그램 변환 방법은 먼저, 프로그램을 수신하는 단계(S100)가 수행될 수 있다.
상기 프로그램은 프로그램 실행 장치에서 실행될 수 있는 명령어(instruction)들의 집합일 수 있다. 예를 들어, 상기 프로그램은 컴퓨터(ccomputer), 단말기(terminal), 서버(server), 이동 단말기(mobile terminal), 또는 기타 전자 장치에서 실행될 수 있는 명령어들의 집합일 수 있다.
상기 프로그램은 프로그램 실행 장치에 포함된 처리 장치에 의해 실행될 수 있다. 상기 처리 장치는 예를 들어, 중앙 처리 장치(Central Processing Unit, CPU), 그래픽 처리 장치(Graphics Processing Unit, GPU), 마이크로컨트롤러유닛(Micro Controller Unit, MCU), 또는 기타 유사한 처리 장치 중에서 어느 하나일 수 있다.
상기 프로그램은 프로그래밍 언어로 작성될 수 있다. 상기 프로그램은 C언어 등의 고급언어로 작성될 수 있다. 도 2는 본 발명의 실시예에 따라 수신된 프로그램의 내용을 나타내는 프로그램 코드(program code)이다.
상기 수신된 프로그램은 반복문(loop statement)을 포함할 수 있다. 상기 수신된 프로그램은 예를 들어, "for" 반복문 또는 "while" 반복문 등을 포함할 수 있다. 도 2에 나타난 바와 같이, 상기 수신된 프로그램은 "for" 반복문을 포함할 수 있다.
또한, 상기 수신된 프로그램은 상기 반복문 내에 포함된 분기문(branch statement)을 포함할 수 있다. 예를 들어, 도 2에 나타난 바와 같이, 상기 수신된 프로그램은 "if" 분기문을 포함할 수 있다.
다시 도 1을 참조하면, 다음으로, 상기 프로그램 내에서 적어도 하나 이상의 분기문이 포함된 적어도 하나 이상의 반복문을 검출하는 단계(S110)가 수행될 수 있다. 예를 들어, 도 2에서와 같은 프로그램이 수신된 경우, 상기 수신된 프로그램은 하나의 "if" 분기문이 포함된 하나의 "for" 반복문을 포함하고 있으므로, 상기 "for" 반복문이 검출될 수 있다.
다음으로, 상기 검출된 반복문에 포함된 상기 분기문에 포함된 조건식(condition expression)에 적어도 하나 이상의 함수가 포함된 경우 상기 함수의 반환값을 획득하는 단계(S120)가 수행될 수 있다. 도 2를 참조하면, "if" 분기문에 포함된 조건식 "i % 2"에는 함수가 포함되어 있지 않다.
도 3은 본 발명의 다른 실시예에 따라 수신된 프로그램의 내용을 나타내는 프로그램 코드이다. 도 3을 참조하면, "if" 분기문에 포함된 조건식 "i % getDivisor(count)"에는 함수 "getDivisor(count)"가 포함되어 있다. 따라서, 상기 함수 "getDivisor(count)"가 호출됨으로써 상기 함수의 반환값이 획득될 수 있다. 예를 들어, 획득된 상기 함수의 반환값이 "2"인 경우, 상기 조건식 "i % getDivisor(count)"는 "i % 2"와 같은 연산식(expression)으로 치환될 수 있다.
다시 도 1을 참조하면, 다음으로, 상기 반복문과 서로 동일한 기능을 수행하고 상기 분기문이 제거된 적어도 하나 이상의 서브 반복문(sub-loop statement)으로 상기 반복문이 분할될 수 있는지 여부를 판정하는 단계(S130)가 수행될 수 있다. 도 4는 본 발명의 실시예에 따른 반복문이 분할될 수 있는지 여부가 판정되는 단계(S130)가 수행되는 과정을 나타내는 순서도이다.
도 4를 참조하면, 상기 반복문이 분할될 수 있는지 여부가 판정되는 단계(S130)는 먼저, 분할 정보 테이블에서 상기 분기문에 포함된 상기 조건식을 조회하는 단계(S131)가 수행될 수 있다.
도 5는 본 발명의 실시예에 따른 분할 정보 테이블의 내용을 나타내는 표이다. 도 5를 참조하면, 본 발명의 실시예에 따른 분할 정보 테이블은 조건식(Condition Expression), 분할 가능성 정보(Possibility Information of a Split), 및 분할 정보(Split Information)의 3개의 컬럼을 포함할 수 있다. 다시 말해서, 상기 분할 정보 테이블에 포함된 각각의 레코드는 조건식, 분할 가능성 정보, 및 분할 정보의 3개의 필드(field)를 포함할 수 있다.
상기 분할 정보 테이블에 포함된 각각의 레코드는 사전에 미리 준비되어 있을 수 있다. 반복문에 포함된 분기문의 조건식이 상기 반복문의 반복 변수(iteration variable)의 값을 변경시키지 않는 경우, 상기 반복문은 분할될 수 있다고 판정될 수 있으며, 대응되는 값이 분할 가능성 정보 필드 및 분할 정보 필드에 저장될 수 있다.
또한, 반복문에 포함된 분기문의 조건식이 상기 반복문의 반복 변수(iteration variable)의 값을 변경시키는 경우, 상기 반복문은 분할될 수 없다고 판정될 수 있으며, 대응되는 값이 분할 가능성 정보 필드 및 분할 정보 필드에 저장될 수 있다.
상기 분기문에 포함된 상기 조건식은 조회를 위해 필요한 형식으로 변환될 수 있다. 예를 들어, 연산식 "i % 2"는 "(iteration variable, operation remainder, 2)"와 같이 변환될 수 있다. 상기 분할 정보 테이블에서 상기 변환된 연산식이 조회될 수 있다.
도 6은 본 발명의 또 다른 실시예에 따라 수신된 프로그램의 내용을 나타내는 프로그램 코드이다. 도 6을 참조하면, "if" 분기문에는 조건식 "++i % 2"가 포함되어 있다. 연산식 "++i % 2"는 "(increment(iteration variable), operation remainder, 2)"와 같이 변환될 수 있다. 상기 분할 정보 테이블에서 상기 변환된 연산식이 조회될 수 있다.
다시 도 4를 참조하면, 다음으로, 상기 조회 결과 상기 조건식이 상기 분할 정보 테이블에 존재하지 않는 경우, 상기 반복문은 분할될 수 없다고 판정하는 단계(S132)가 수행될 수 있다.
다음으로, 상기 조회 결과 상기 조건식이 상기 분할 정보 테이블에 존재하는 경우, 상기 분할 정보 테이블로부터 상기 조건식에 대응하는 분할 가능성 정보를 수신하는 단계(S133)가 수행될 수 있다. 예를 들어, 도 5를 참조하면, 변환된 연산식 "(iteration variable, operation remainder, 2)"는 상기 분할 정보 테이블에 존재할 수 있다. 따라서, 상기 변환된 연산식에 대응되는 레코드에서, 분할 가능성 정보 필드의 값인 "1"이 수신될 수 있다.
또한, 도 5를 참조하면, 변환된 연산식 "(increment(iteration variable), operation remainder, 2)"는 상기 분할 정보 테이블에 존재할 수 있다. 따라서, 상기 변환된 연산식에 대응되는 레코드에서, 분할 가능성 정보 필드의 값인 "0"이 수신될 수 있다.
다시 도 4를 참조하면, 다음으로, 상기 수신된 분할 가능성 정보를 이용하여 상기 반복문이 분할될 수 있는지 여부를 판정하는 단계(S134)가 수행될 수 있다. 예를 들어, 상기 수신된 분할 가능성 정보로서 "1"이 수신된 경우, 상기 반복문은 분할될 수 있다고 판정될 수 있다. 따라서, 도 2의 프로그램에 포함된 반복문은 분할될 수 있다고 판정될 수 있다.
또한, 상기 수신된 분할 가능성 정보로서 "0"이 수신된 경우, 상기 반복문은 분할될 수 없다고 판정될 수 있다. 따라서, 도 6의 프로그램에 포함된 반복문은 분할될 수 없다고 판정될 수 있다.
도 7은 본 발명의 또 다른 실시예에 따른 반복문의 분할 가능 여부가 판정되는 단계(S130)가 수행되는 과정을 나타내는 순서도이다. 도 7을 참조하면, 상기 반복문이 분할될 수 있는지 여부가 판정되는 단계(S130)는 먼저, 분할 정보 테이블에서 상기 분기문에 포함된 상기 조건식을 조회하는 단계(S231)가 수행될 수 있다.
도 8은 본 발명의 또 다른 실시예에 따른 분할 정보 테이블의 내용을 나타내는 표이다. 도 8을 참조하면, 본 발명의 또 다른 실시예에 따른 분할 정보 테이블은 조건식(Condition Expression) 및 분할 정보(Split Information)의 2개의 컬럼을 포함할 수 있다. 다시 말해서, 상기 분할 정보 테이블에 포함된 각각의 레코드는 조건식 및 분할 정보의 2개의 필드(field)를 포함할 수 있다.
상기 분기문에 포함된 상기 조건식은 조회를 위해 필요한 형식으로 변환될 수 있다. 예를 들어, 연산식 "i % 2"는 "(iteration variable, operation remainder, 2)"와 같이 변환될 수 있다. 상기 분할 정보 테이블에서 상기 변환된 연산식이 조회될 수 있다. 또한, 연산식 "++i % 2"는 "(increment(iteration variable), operation remainder, 2)"와 같이 변환될 수 있다. 상기 분할 정보 테이블에서 상기 변환된 연산식이 조회될 수 있다.
다시 도 7을 참조하면, 다음으로, 상기 조회 결과 상기 조건식이 상기 분할 정보 테이블에 존재하지 않는 경우, 상기 반복문은 분할될 수 없다고 판정하는 단계(S232)가 수행될 수 있다. 예를 들어, 도 8을 참조하면, 변환된 연산식 "(increment(iteration variable), operation remainder, 2)"는 상기 분할 정보 테이블에 존재하지 않을 수 있다. 따라서, 도 6의 프로그램에 포함된 반복문은 분할될 수 없다고 판정될 수 있다.
다음으로, 상기 조회 결과 상기 조건식이 상기 분할 정보 테이블에 존재하는 경우, 상기 반복문은 분할될 수 있다고 판정하는 단계(S233)가 수행될 수 있다. 예를 들어, 도 8을 참조하면, 변환된 연산식 "(iteration variable, operation remainder, 2)"는 상기 분할 정보 테이블에 존재할 수 있다. 따라서, 도 2의 프로그램에 포함된 반복문은 분할될 수 있다고 판정될 수 있다.
다시 도 1을 참조하면, 다음으로, 상기 판정 결과 상기 반복문이 분할될 수 있다고 판정된 경우 상기 반복문을 상기 서브 반복문으로 분할하고 상기 반복문에 포함된 상기 분기문을 제거하는 단계(S140)가 수행될 수 있다. 도 9는 본 발명의 실시예에 따른 반복문에 포함된 분기문이 제거되고 반복문이 분할되는 단계(S140)가 수행되는 과정을 나타내는 순서도이다.
도 9를 참조하면, 반복문에 포함된 분기문이 제거되고 반복문이 분할되는 단계(S140)는 먼저, 상기 분할 정보 테이블로부터 상기 조건식에 대응하는 분할 정보를 수신하는 단계(S141)가 수행될 수 있다. 예를 들어, 도 5를 참조하면, 변환된 연산식 "(iteration variable, operation remainder, 2)"에 대응되는 분할 정보 "(2, initial iteration value + 1, last iteration value, 2, iteration variable, initial iteration value, last iteration value, 2, iteration variable)"이 수신될 수 있다.
상기 분할 정보는 예를 들어, 서브 반복문의 개수, 제1 서브 반복문의 초기 반복값(initial iteration value), 제1 서브 반복문의 마지막 반복값(last iteration value), 제1 서브 반복문의 반복값의 증가값(increment value), 제1 서브 반복문 내에서 참조되는 반복 변수(iteration variable), 제2 서브 반복문의 초기 반복값(initial iteration value), 제2 서브 반복문의 마지막 반복값(last iteration value), 제2 서브 반복문의 반복값의 증가값(increment value), 제2 서브 반복문 내에서 참조되는 반복 변수(iteration variable), ... 등과 같은 요소를 포함할 수 있다.
다음으로, 상기 수신된 분할 정보를 이용하여 상기 반복문을 상기 서브 반복문으로 분할하고 상기 반복문에 포함된 상기 분기문을 제거하는 단계(S142)가 수행될 수 있다. 예를 들어, 분할 정보 "(2, initial iteration value + 1, last iteration value, 2, iteration variable, initial iteration value, last iteration value, 2, iteration variable)"이 수신된 경우를 가정하기로 한다. 상기 분할 정보를 이용하여 도 2의 프로그램 내에 포함된 반복문에 포함된 분기문이 제거되고 상기 반복문이 서브 반복문으로 분할될 수 있다.
상기 분할 정보를 참조하면, 상기 반복문은 제1 서브 반복문 및 제2 서브 반복문의 2개의 서브 반복문으로 분할될 수 있다. 제1 서브 반복문의 초기 반복값은 원래 반복문의 초기 반복값보다 1이 큰 수로 지정될 수 있다. 제1 서브 반복문의 마지막 반복값은 원래 반복문의 마지막 반복값과 동일한 수로 지정될 수 있다. 제1 서브 반복문의 반복값의 증가값은 2로 지정될 수 있다. 제1 서브 반복문 내에서 참조되는 반복 변수는 원래 반복문의 반복 변수와 동일한 변수로 지정될 수 있다.
또한, 상기 분할 정보를 참조하면, 제2 서브 반복문의 초기 반복값은 원래 반복문의 초기 반복값과 동일한 수로 지정될 수 있다. 제2 서브 반복문의 마지막 반복값은 원래 반복문의 마지막 반복값과 동일한 수로 지정될 수 있다. 제2 서브 반복문의 반복값의 증가값은 2로 지정될 수 있다. 제2 서브 반복문 내에서 참조되는 반복 변수는 원래 반복문의 반복 변수와 동일한 변수로 지정될 수 있다.
도 10은 상기와 같은 과정에 의해 도 2의 반복문에 포함된 분기문이 제거되고 상기 반복문이 서브 반복문으로 분할된 결과를 나타내는 프로그램 코드이다.
다시 도 1을 참조하면, 다음으로, 상기 판정 결과 상기 반복문이 분할될 수 없다고 판정된 경우 하이퍼블로킹(hyperblocking) 방법을 이용하여 상기 반복문에 포함된 상기 분기문을 제거하는 단계(S150)가 수행될 수 있다. 도 11은 하이퍼블로킹 방법을 이용하여 도 6의 반복문에 포함된 분기문이 제거된 결과를 나타내는 프로그램 코드이다.
다시 도 1을 참조하면, 다음으로, 상기 분기문이 제거된 결과를 출력하는 단계(S160)가 수행될 수 있다.
상기와 같은 본 발명의 실시예에 따른 프로그램 변환 방법에 따르면, 분기문을 포함한 컴퓨터 프로그램이, 상기 컴퓨터 프로그램과 동일한 기능을 수행하고 상기 분기문이 제거된 컴퓨터 프로그램으로 변환될 수 있다.
프로그램 실행 장치는 통상적으로 분기 명령(branch instructions)을 실행할 수 있다. 그러나, 분기 명령의 실행 속도는 다른 종류의 명령에 비해 느린 편이므로, 분기문을 포함한 컴퓨터 프로그램은 상기 컴퓨터 프로그램과 동일한 기능을 수행하는 비분기 명령(non-branch instructions)에 비해 실행 시간이 더 길 수 있다. 따라서, 본 발명의 실시예에 따른 프로그램 변환 방법에 따라, 컴퓨터 프로그램에 포함된 분기문이 제거된 컴퓨터 프로그램의 실행 시간은 원래의 컴퓨터 프로그램의 실행 시간보다 더 짧을 수 있다.
또한, 상술한 본 발명의 실시예에 따르면, 반복문이 분할될 수 있다고 판정된 경우에는 상기 반복문이 적어도 하나 이상의 서브 반복문으로 분할되고, 상기 반복문이 분할될 수 없다고 판정된 경우에는 하이퍼블로킹 방법이 이용될 수 있다. 만약에 상기와 같은 본 발명의 실시예에서와 달리, 컴퓨터 프로그램에 포함된 분기문이 오직 하이퍼블로킹 방법을 이용하여 제거된 컴퓨터 프로그램의 실행시간은, 상기와 같은 본 발명의 실시예에 따라 변환된 컴퓨터 프로그램의 실행시간에 비해 더 길 수 있다. 왜냐하면, 하이퍼블로킹 방법이 이용된 경우, 분기문의 조건식이 참(true) 또는 거짓(false)인지 여부를 불문하고 상기 조건식이 참일 때에 대응되는 명령과 상기 조건식이 거짓일 때에 대응되는 명령이 모두 실행되기 때문이다.
또한, 상기와 같은 본 발명의 실시예에 따르면, 상기와 같은 본 발명의 실시예에서와 달리 컴퓨터 프로그램에 포함된 분기문이 오직 하이퍼블로킹 방법을 이용하여 제거되는 경우에 비해, 상기 프로그램이 더 신속하게 변환될 수 있다. 왜냐하면, 본 발명의 실시예에 따라 반복문이 적어도 하나 이상의 서브 반복문으로 분할되는 단계(S140)는, 하이퍼블로킹 방법을 이용하여 반복문에 포함된 분기문을 제거하는 단계(S150)에 비해 더 간단하고 수행 시간이 더 짧을 수 있기 때문이다.
도 12는 본 발명의 실시예에 따른 프로그램 변환 장치(100)의 구성을 나타내는 블록도이다. 도 12를 참조하면, 본 발명의 실시예에 따른 프로그램 변환 장치(100)는, 프로그램 입력부(110), 프로그램 변환부(120), 및 프로그램 출력부(130)를 포함할 수 있다.
프로그램 입력부(110)는 프로그램을 수신할 수 있다. 프로그램 입력부(110)는 상기 프로그램을 외부로부터 수신할 수도 있고, 다른 프로그램 변환 장치(100)의 프로그램 출력부(130)로부터 수신할 수도 있다. 프로그램 입력부(110)에 대한 보다 상세한 내용은 상술한 프로그램을 수신하는 단계(S100)에 대응되므로 자세한 설명은 생략하기로 한다.
프로그램 변환부(120)는 상기 프로그램 내에서 적어도 하나 이상의 분기문이 포함된 적어도 하나 이상의 반복문을 검출할 수 있다. 또한, 프로그램 변환부(120)는 상기 검출된 반복문에 포함된 상기 분기문에 포함된 조건식(condition expression)에 적어도 하나 이상의 함수가 포함된 경우 상기 함수의 반환값을 획득할 수 있다. 또한, 프로그램 변환부(120)는 상기 반복문과 서로 동일한 기능을 수행하고 상기 분기문이 제거된 적어도 하나 이상의 서브 반복문(sub-loop statement)으로 상기 반복문이 분할될 수 있는지 여부를 판정할 수 있다.
또한, 프로그램 변환부(120)는 상기 판정 결과 상기 반복문이 분할될 수 있다고 판정된 경우 상기 반복문을 상기 서브 반복문으로 분할하고 상기 반복문에 포함된 상기 분기문을 제거할 수 있다. 또한, 프로그램 변환부(120)는 다시 상기 판정 결과 상기 반복문이 분할될 수 없다고 판정된 경우 하이퍼블로킹(hyperblocking) 방법을 이용하여 상기 반복문에 포함된 상기 분기문을 제거할 수 있다.
프로그램 변환부(120)에 대한 보다 상세한 내용은, 상술한 분기문이 포함된 반복문을 검출하는 단계(S110) 내지 하이퍼블로킹(hyperblocking) 방법을 이용하여 상기 반복문에 포함된 상기 분기문을 제거하는 단계(S150)에 대응되므로 자세한 설명은 생략하기로 한다.
프로그램 출력부(130)는 상기 분기문이 제거된 결과를 출력할 수 있다. 프로그램 출력부(130)에 대한 보다 상세한 내용은, 상술한 상기 분기문이 제거된 결과를 출력하는 단계(S160)에 대응되므로 자세한 설명은 생략하기로 한다.
이상에서 설명한 본 발명의 실시예에 따르면, 컴퓨터 프로그램이 실행되는 속도를 향상시킬 수 있다. 또한, 컴퓨터 프로그램을 실행되는 속도가 향상된 컴퓨터 프로그램으로 변환할 수 있다. 또한, 분기문을 포함한 컴퓨터 프로그램을 상기 컴퓨터 프로그램과 동일한 기능을 수행하고 상기 분기문이 제거된 컴퓨터 프로그램으로 변환할 수 있다.
또한, 분기문(branch statement)이 포함된 반복문(loop statement)을 상기 반복문과 동일한 기능을 수행하고 상기 분기문이 제거된 반복문으로 변환할 수 있다. 또한, 분기문이 포함된 반복문을 상기 반복문과 동일한 기능을 수행하는 적어도 하나 이상의 반복문으로 변환할 수 있다. 또한, 분기문을 포함한 컴퓨터 프로그램을 상기 컴퓨터 프로그램과 동일한 기능을 수행하고 상기 분기문이 제거된 컴퓨터 프로그램으로 보다 신속하게 변환할 수 있다. 또한, 분기문을 포함한 컴퓨터 프로그램을 상기 컴퓨터 프로그램과 동일한 기능을 수행하고 상기 분기문이 제거된 컴퓨터 프로그램으로 보다 신속하게 변환할 수 있다.
이상에서 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 프로그램 변환 장치
110: 프로그램 입력부
120: 프로그램 변환부
130: 프로그램 출력부
110: 프로그램 입력부
120: 프로그램 변환부
130: 프로그램 출력부
Claims (20)
- 프로그램을 수신하는 단계;
상기 프로그램 내에서 적어도 하나 이상의 분기문이 포함된 적어도 하나 이상의 반복문을 검출하는 단계;
상기 반복문과 서로 동일한 기능을 수행하고 상기 분기문이 제거된 적어도 하나 이상의 서브 반복문(sub-loop statement)으로 상기 반복문이 분할될 수 있는지 여부를 판정하는 단계;
상기 판정 결과 상기 반복문이 분할될 수 있다고 판정된 경우 상기 반복문을 상기 서브 반복문으로 분할하고 상기 반복문에 포함된 상기 분기문을 제거하는 단계; 및
상기 분기문이 제거된 결과를 출력하는 단계를 포함하고,
상기 반복문이 분할될 수 있는지 여부를 판정하는 단계는,
분할 정보 테이블에서 상기 분기문에 포함된 조건식을 조회하는 단계;
상기 조회 결과 상기 조건식이 상기 분할 정보 테이블에 존재하지 않는 경우, 상기 반복문은 분할될 수 없다고 판정하는 단계; 및
상기 조회 결과 상기 조건식이 상기 분할 정보 테이블에 존재하는 경우, 상기 반복문은 분할될 수 있다고 판정하는 단계
를 더 포함하는 프로그램 변환 방법. - 제1항에 있어서,
상기 반복문이 분할될 수 있는지 여부를 판정하는 단계는,
상기 분기문에 포함된 조건식이 상기 반복문의 반복 변수(iteration variable)의 값을 변경시키지 않는 경우 상기 반복문이 분할될 수 있다고 판정하는 단계
를 포함하는 프로그램 변환 방법. - 삭제
- 제1항에 있어서,
상기 반복문이 분할될 수 있는지 여부를 판정하는 단계는,
상기 조회 결과 상기 조건식이 상기 분할 정보 테이블에 존재하는 경우, 상기 분할 정보 테이블로부터 상기 조건식에 대응하는 분할 가능성 정보를 수신하는 단계; 및
상기 수신된 분할 가능성 정보를 이용하여 상기 반복문이 분할될 수 있는지 여부를 판정하는 단계
를 포함하는 프로그램 변환 방법. - 제4항에 있어서,
상기 분할 정보 테이블은 상기 조건식, 상기 조건식에 대응하는 상기 분할 가능성 정보 및 상기 조건식에 대응하는 분할 정보 중에서 적어도 하나 이상을 포함하는 프로그램 변환 방법. - 삭제
- 삭제
- 삭제
- 제1항에 있어서,
상기 반복문을 상기 서브 반복문으로 분할하고 상기 반복문에 포함된 상기 분기문을 제거하는 단계는,
분할 정보 테이블로부터 조건식에 대응하는 분할 정보를 수신하는 단계; 및
상기 수신된 분할 정보를 이용하여 상기 반복문을 상기 서브 반복문으로 분할하고 상기 반복문에 포함된 상기 분기문을 제거하는 단계
를 포함하는 프로그램 변환 방법. - 제1항에 있어서,
상기 반복문을 상기 서브 반복문으로 분할하고 상기 반복문에 포함된 상기 분기문을 제거하는 단계 이후에,
상기 판정 결과 상기 반복문이 분할될 수 없다고 판정된 경우 하이퍼블로킹(hyperblocking) 방법을 이용하여 상기 반복문에 포함된 상기 분기문을 제거하는 단계
를 더 포함하는 프로그램 변환 방법. - 제1항에 있어서,
상기 분기문이 포함된 상기 반복문을 검출하는 단계 이후에,
상기 검출된 반복문에 포함된 상기 분기문에 포함된 조건식(condition expression)에 적어도 하나 이상의 함수가 포함된 경우 상기 함수의 반환값을 획득하는 단계
를 더 포함하는 프로그램 변환 방법. - 프로그램을 수신하는 프로그램 입력부;
상기 프로그램 내에서 적어도 하나 이상의 분기문이 포함된 적어도 하나 이상의 반복문을 검출하고, 상기 반복문과 서로 동일한 기능을 수행하고 상기 분기문이 제거된 적어도 하나 이상의 서브 반복문(sub-loop statement)으로 상기 반복문이 분할될 수 있는지 여부를 판정하고, 상기 판정 결과 상기 반복문이 분할될 수 있다고 판정된 경우 상기 반복문을 상기 서브 반복문으로 분할하고 상기 반복문에 포함된 상기 분기문을 제거하는 프로그램 변환부; 및
상기 분기문이 제거된 결과를 출력하는 프로그램 출력부를 포함하고,
상기 프로그램 변환부는,
분할 정보 테이블에서 상기 분기문에 포함된 조건식을 조회하고, 상기 조회 결과 상기 조건식이 상기 분할 정보 테이블에 존재하지 않는 경우, 상기 반복문은 분할될 수 없다고 판정하고, 상기 조회 결과 상기 조건식이 상기 분할 정보 테이블에 존재하는 경우, 상기 반복문은 분할될 수 있다고 더 판정하는 것을 특징으로 하는 프로그램 변환 장치. - 삭제
- 삭제
- 제12항에 있어서,
상기 프로그램 변환부는, 상기 조회 결과 상기 조건식이 상기 분할 정보 테이블에 존재하는 경우 상기 분할 정보 테이블로부터 상기 조건식에 대응하는 분할 가능성 정보를 수신하고, 상기 프로그램 변환부는 상기 수신된 분할 가능성 정보를 이용하여 상기 반복문이 분할될 수 있는지 여부를 판정하는 프로그램 변환 장치. - 삭제
- 삭제
- 삭제
- 삭제
- 삭제
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130115718A KR102147355B1 (ko) | 2013-09-27 | 2013-09-27 | 프로그램 변환 방법 및 장치 |
US14/204,067 US9588747B2 (en) | 2013-09-27 | 2014-03-11 | Method and apparatus for converting programs |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130115718A KR102147355B1 (ko) | 2013-09-27 | 2013-09-27 | 프로그램 변환 방법 및 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150035329A KR20150035329A (ko) | 2015-04-06 |
KR102147355B1 true KR102147355B1 (ko) | 2020-08-24 |
Family
ID=52741486
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020130115718A KR102147355B1 (ko) | 2013-09-27 | 2013-09-27 | 프로그램 변환 방법 및 장치 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9588747B2 (ko) |
KR (1) | KR102147355B1 (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10068070B2 (en) * | 2015-05-05 | 2018-09-04 | Nxp B.V. | White-box elliptic curve point multiplication |
JP6418696B2 (ja) * | 2015-07-23 | 2018-11-07 | 国立大学法人東京工業大学 | 命令セットシミュレータおよびそのシミュレータ生成方法 |
CN112115487B (zh) * | 2019-06-20 | 2024-05-31 | 华控清交信息科技(北京)有限公司 | 一种数据处理方法、装置和电子设备 |
CN113672232B (zh) * | 2021-07-09 | 2024-06-11 | 华为技术有限公司 | 程序编译方法和装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5202995A (en) | 1989-10-12 | 1993-04-13 | International Business Machines Corporation | Method for removing invariant branches from instruction loops of a computer program |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0527986A (ja) | 1991-07-24 | 1993-02-05 | Matsushita Electric Ind Co Ltd | コンパイラの最適化方法および最適化装置 |
US6105124A (en) | 1996-01-26 | 2000-08-15 | Intel Corporation | Method and apparatus for merging binary translated basic blocks of instructions |
US6253373B1 (en) * | 1997-10-07 | 2001-06-26 | Hewlett-Packard Company | Tracking loop entry and exit points in a compiler |
JP2008015665A (ja) | 2006-07-04 | 2008-01-24 | Hitachi Ltd | プログラム解析方法及びプログラム解析装置 |
JP2012174153A (ja) | 2011-02-24 | 2012-09-10 | Mitsubishi Electric Corp | プログラム最適化装置およびプログラム最適化方法およびプログラム |
-
2013
- 2013-09-27 KR KR1020130115718A patent/KR102147355B1/ko active IP Right Grant
-
2014
- 2014-03-11 US US14/204,067 patent/US9588747B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5202995A (en) | 1989-10-12 | 1993-04-13 | International Business Machines Corporation | Method for removing invariant branches from instruction loops of a computer program |
Also Published As
Publication number | Publication date |
---|---|
US20150095897A1 (en) | 2015-04-02 |
KR20150035329A (ko) | 2015-04-06 |
US9588747B2 (en) | 2017-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9021241B2 (en) | Combined branch target and predicate prediction for instruction blocks | |
US20110307507A1 (en) | Identifying entries and exits of strongly connected components | |
KR102147355B1 (ko) | 프로그램 변환 방법 및 장치 | |
US8972999B2 (en) | Method and system for detecting program deadlock | |
US9223552B2 (en) | Compiling optimization of an application and compiler thereof | |
CN104899147A (zh) | 一种面向安全检查的代码静态分析方法 | |
EP2963547A1 (en) | Compiling device, compiling method, and storage medium storing compiler program | |
US20230028595A1 (en) | Analysis function imparting device, analysis function imparting method, and analysis function imparting program | |
US20130262090A1 (en) | System and method for reducing semantic ambiguity | |
CN112346730B (zh) | 一种中间表示的生成方法、计算机设备及存储介质 | |
CN106648636B (zh) | 一种基于图挖掘的软件函数变更预测***及方法 | |
US20130232471A1 (en) | Method and Apparatus for Assessing Software Parallelization | |
JP2007018254A (ja) | 言語処理装置 | |
US8490098B2 (en) | Concomitance scheduling commensal threads in a multi-threading computer system | |
US10990073B2 (en) | Program editing device, program editing method, and computer readable medium | |
JP6648413B2 (ja) | 自動抽象化を有するシンボリック実行 | |
CN109240701B (zh) | 一种面向谓词执行高性能dsp的指令依赖关系分析方法 | |
US9396044B2 (en) | Memory efficient thread-level speculation | |
Ali et al. | An enhanced generic pipeline model for code clone detection | |
US10140538B2 (en) | Computing control device, computing control method, and computer readable medium | |
KR102297435B1 (ko) | 응용 프로그램의 이벤트 스트림 데이터 처리 성능 향상 방법 및 장치 | |
JP6810380B2 (ja) | ソースプログラム変換システム、ソースプログラム変換方法、及びソースプログラム変換プログラム | |
KR101908573B1 (ko) | 효율적인 리턴-지향형 프로그래밍 공격을 방어할 수 있도록 컴퓨터 프로그램을 생성하는 방법 | |
JP6025955B1 (ja) | プログラム解析装置及びプログラム解析方法 | |
WO2017030538A1 (en) | Dynamic lexer object construction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |