KR20100099569A - 실행 파일 생성 방법 및 그 방법을 이용하는 시스템 장치 - Google Patents

실행 파일 생성 방법 및 그 방법을 이용하는 시스템 장치 Download PDF

Info

Publication number
KR20100099569A
KR20100099569A KR1020090018125A KR20090018125A KR20100099569A KR 20100099569 A KR20100099569 A KR 20100099569A KR 1020090018125 A KR1020090018125 A KR 1020090018125A KR 20090018125 A KR20090018125 A KR 20090018125A KR 20100099569 A KR20100099569 A KR 20100099569A
Authority
KR
South Korea
Prior art keywords
function
functions
executable file
call
count information
Prior art date
Application number
KR1020090018125A
Other languages
English (en)
Other versions
KR101670916B1 (ko
Inventor
권기현
제이딥 스바쉬 파틸
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020090018125A priority Critical patent/KR101670916B1/ko
Priority to US12/693,560 priority patent/US8566813B2/en
Publication of KR20100099569A publication Critical patent/KR20100099569A/ko
Application granted granted Critical
Publication of KR101670916B1 publication Critical patent/KR101670916B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • G06F8/4442Reducing the number of cache misses; Data prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44557Code layout in executable memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

실행 파일 생성 방법 및 그 방법을 이용하는 시스템 장치가 개시된다. 상기 실행 파일 생성 방법은 각각의 함수의 호출 횟수 정보를 검출하는 단계 및 상기 각각의 함수의 호출 횟수 정보를 이용하여 상기 함수들을 배치하여 실행 파일을 생성하는 단계를 구비할 수 있다.

Description

실행 파일 생성 방법 및 그 방법을 이용하는 시스템 장치{Method for storing function and system device using the same}
본 발명은 실행 파일 생성 방법 및 시스템 장치에 관한 것으로, 특히 함수를 소정의 기준으로 배치하여 실행 파일을 생성하는 방법 및 그 방법을 이용하는 시스템 장치에 관한 것이다.
일반적으로 프로그래밍 언어는 컴파일링(compiling), 어셈블링(assembling) 및 링킹(linking) 과정을 통하여 적어도 하나의 함수를 포함하는 실행 파일을 생성한다. 상기 실행 파일은 메모리에 저장된다.
본 발명이 해결하고자 하는 과제는 응용프로그램 내의 함수 호출 명령에 소요되는 코드 크기 및 함수 호출 수행 시간을 최소화할 수 있도록 실행 파일을 생성하는 방법을 제공하는데 있다.
본 발명이 해결하고자 하는 다른 과제는 상기 실행 파일 생성 방법을 이용하는 시스템 장치를 제공하는데 있다.
상기 과제를 달성하기 위한 본 발명의 일 실시예에 따른 실행 파일 생성 방법은 각각의 함수의 호출 횟수 정보를 검출하는 단계 및 상기 각각의 함수의 호출 횟수 정보를 이용하여 상기 함수들을 배치하여 실행 파일을 생성하는 단계를 구비할 수 있다.
상기 실행 파일 생성하는 단계는 단일 워드 명령어로 호출할 수 있는 소정의 공간 내에 상기 호출 횟수 정보에 따라 순차적으로 상기 함수들의 시작 어드레스가 포함되도록 상기 함수들을 배치하여 실행 파일을 생성하는 단계일 수 있다.
상기 검출하는 단계는 상기 함수가 상기 다른 함수 내의 호출 지점에서 반복적으로 호출되는 경우, 상기 함수가 한 번 호출된 것으로 판단하여 상기 호출 횟수 정보를 결정하는 단계를 구비할 수 있다.
상기 검출하는 단계는 상기 함수가 상기 다른 함수 내의 호출 지점에서 반복적으로 호출되는 경우, 가중치를 부가하여 상기 호출 횟수 정보를 결정하는 단계를 구비할 수 있다.
상기 실행 파일 생성 방법은 각각의 함수의 크기 정보를 검출하는 단계를 더 구비하고, 상기 실행 파일 생성하는 단계는 상기 각각의 함수의 호출 횟수 정보 및 크기 정보를 이용하여 상기 함수들을 배치하여 실행 파일을 생성하는 단계일 수 있다.
상기 실행 파일을 생성하는 단계는 단일 워드 명령어로 호출할 수 있는 소정의 공간 내에 마지막으로 함수를 배치하는 경우, 남은 공간보다 크기가 작은 함수가 있는지 판단하는 단계 및 상기 남은 공간보다 크기가 작은 함수들이 있는 경우, 상기 크기가 작은 함수들 중 호출 횟수 정보가 가장 큰 함수를 먼저 배치하고, 나머지 배치되지 않은 함수들 중 호출 횟수 정보가 가장 큰 함수를 배치하는 단계를 구비할 수 있다.
상기 다른 과제를 달성하기 위한 본 발명의 일 실시예에 따른 시스템 장치는 각각의 함수의 호출 횟수 정보를 검출하고, 상기 각각의 함수의 호출 횟수 정보를 이용하여 상기 함수들을 배치함으로서 실행 파일을 생성하는 링커, 상기 실행 파일이 저장되는 메모리 및 상기 메모리에 저장된 실행 파일의 함수들을 호출하는 마이크로 프로세서를 구비할 수 있다.
상기 링커는 상기 각각의 함수의 호출 횟수 정보 및 크기 정보를 검출하고, 상기 각각의 함수의 호출 횟수 정보 및 크기 정보를 이용하여 상기 함수들을 배치함으로서 실행 파일을 생성할 수 있다.
상기 시스템 장치는 상기 실행 파일의 시작 어드레스 위치를 저장하는 제어 레지스터를 더 구비할 수 있다.
본 발명에 따른 실행 파일 생성 방법 및 그 방법을 이용하는 시스템 장치는 한정된 공간에 적절하게 함수를 배치함으로서, 응용프로그램에서 상기 함수를 호출하는 경우 함수 호출 명령에 소요되는 코드 크기 및 함수 호출 수행 시간을 최소화할 수 있는 장점이 있다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 도면에 기재된 내용을 참조하여야 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 1은 응용프로그램 개발 과정을 개략적으로 도시한 도면이다.
도 1을 참조하면, 컴파일러(compiler)(120)는 소스 파일(source file)(110)로부터 어셈블리 파일(assembly file)(130)을 생성하고, 어셈블러(assembler)(140)는 어셈블리 파일(130)을 각각 재배치 가능한 기계어(relocatable machine code)로 변환하여 목적 파일(object file)(150)을 생성한다. 마지막으로 링커(linker)(160)는 모든 목적 파일들(150)을 묶어서 실행 파일(170)을 생성한다. 즉, 링커(160)가 모든 목적 파일들(150)을 묶어서 실행 파일(170)을 생성함으로서 상기 응용프로그 램이 개발된다.
링커(160)는 상기 응용프로그램 내에서 각각의 변수, 심볼 및 함수 등의 위치 및 어드레스를 결정한다. 링커(160)는 각각의 함수가 저장될 메모리 공간을 지정하고 상기 함수를 호출하기 위한 어드레스를 결정하는 과정에서 모든 함수의 호출 횟수 정보 및 크기 정보를 분석할 수 있다.
도 2는 단일워드 명령어(200)의 일 실시예를 도시한 도면이다.
도 2를 참조하면, 단일워드 명령어(200)는 6 비트로 정의되는 명령어 비트들(0~5) 및 10비트로 정의되는 어드레스 비트들(6~15)을 포함할 수 있다. 이와 같이 10비트를 이용하여 어드레스를 지정하는 경우, 210 바이트 공간 내에 시작 어드레스를 가지는 함수들을 단일워드 명령어(200)로 호출할 수 있다. 이하에서는, 도 2의 단일워드 명령어(200)를 이용하여 함수를 호출한다고 가정하여 상기 함수들을 배치하는 방법을 설명한다. 다만, 본 발명이 도 2의 단일워드 명령어(200)를 이용하는 경우에 한정되는 것은 아니며, 필요에 따라 상기 어드레스 비트들의 개수를 다르게 할 수도 있다. 예를 들어, 상기 단일워드 명령 내에 상기 어드레스 비트가 n 개인 경우, 아래와 같은 방법으로 상기 함수들의 시작 어드레스가 메모리의 2n 바이트 공간 내에 지정되도록 할 수 있다.
도 3은 본 발명의 일 실시예에 따른 실행 파일 생성 방법의 흐름도이다.
도 3을 참조하면, 상기 실행 파일 생성 방법은 각각의 함수의 호출 횟수 정보를 검출하는 단계(S310) 및 상기 각각의 함수의 호출 횟수 정보를 이용하여 상기 함수들을 배치하는 단계(S320)를 구비할 수 있다.
도 1에서 설명한 바와 같이 링커(160)는 상기 모든 함수의 호출 횟수 정보를 알고 있으므로, 각각의 함수의 호출 횟수 정보는 도 1의 링커(160)가 분석한 상기 모든 함수의 호출 횟수 정보를 이용할 수 있다. 상기 함수의 호출 횟수 정보란 나머지 다른 함수들에서 상기 함수를 호출하는 횟수를 모두 합한 것을 의미한다.
상기 호출 횟수 정보에 대하여는 아래와 같은 두 가지 방법 중 하나를 이용하여 결정할 수 있다. 첫 번째 방법으로는, 상기 함수가 상기 다른 함수 내의 호출 지점에서 반복적으로 호출되는 경우, 상기 함수가 한 번 호출된 것으로 판단하여 상기 호출 횟수 정보를 결정하는 것이다. 두 번째 방법으로는, 상기 함수가 상기 다른 함수 내의 호출 지점에서 반복적으로 호출되는 경우, 가중치를 부가하여 상기 호출 횟수 정보를 결정하는 것이다.
예를 들어, A라는 함수가 B라는 함수 내에서 호출이 되는데, 상기 A 함수는 루프(loop) 내에 존재하여 상기 루프내의 호출 지점에서 반복적으로 호출된다고 가정하자. 이하에서 상기 가중치는 1이라고 가정한다. 상기 첫 번째 방법에 의할 경우, 상기 A 함수가 상기 B 함수의 루프 내에서 호출되는 것은 한 번 호출된 것으로 결정된다. 상기 두 번째 방법에 의할 경우, 상기 A 함수가 상기 B 함수의 루프 내에서 호출되는 것은 상기 가중치를 부가하여 두 번 호출된 것으로 결정된다. 따라서, 상기 두 번째 방법에 의하여 상기 호출 횟수 정보를 결정하는 경우, 상기 첫 번째 방법에 의하여 상기 호출 횟수 정보를 결정하는 경우에 비하여 상기 호출 횟수 정보의 값이 커질 수 있다. 상기 예에서 상기 가중치는 1이라고 가정하였으나 본 발명이 이 경우에 한정되는 것은 아니며, 상기 가중치는 소정의 값으로 할 수 있다.
상기 각각의 함수의 호출 횟수 정보를 검출한 후, 상기 각각의 함수의 호출 횟수 정보를 이용하여 상기 함수들을 배치함으로서 실행 파일을 생성할 수 있다(S320). 즉, 상기 호출 횟수 정보가 높은 함수부터 순차적으로 상기 함수들을 배치하여 실행 파일을 생성할 수 있다.
도 4(a)는 본 발명의 일 실시예에 따라 각각의 함수가 배치되는 순서를 도시한 표이다.
도 4(b)는 도 4(a)의 함수들을 배치하여 생성된 실행 파일(400)을 도시한 도면이다.
도 4(a)를 참조하면, A 함수 내지 L 함수의 호출 횟수 정보 및 크기 정보를 알 수 있다. 도 4(a)의 A 함수 내지 L 함수의 호출 횟수 정보는 도 3에서 설명한 두 가지 방법 중 하나의 방법에 의하여 결정될 수 있다. 도 4(a)는 각각의 함수의 호출 횟수 정보를 이용하여 A 함수 내지 L 함수를 순차적으로 배치한 것이다. 즉, 상기 호출 횟수 정보가 가장 큰 A 함수부터 내림차순으로 정렬하였다. 도 4(b)는 도 4(a)의 순서, 즉 A 함수, B 함수, C 함수, D 함수, E 함수, F 함수 및 G 함수의 순서로 배치되어 생성된 실행 파일(400)을 도시하고 있다. 도 4(b)에서는 H 함수 내지 L 함수에 대하여는 도시하지 않았으나, 상기 G 함수 이후에 순차적으로 배치될 수 있다.
도 4(b)의 410 영역은 상기 단일워드 명령어로 상기 함수들을 호출할 수 있 는 공간을 의미한다. 즉, 410 영역에 시작 어드레스가 포함되는 함수들은 상기 단일워드 명령어로 호출할 수 있다. 예를 들어, 앞서 설명한 바와 같이 상기 단일워드 명령어의 어드레스 비트 개수가 n 개(n은 자연수)인 경우, 410 영역은 2n 바이트의 크기를 가질 수 있다. 이하에서는 도 2의 단일워드 명령어(200)를 이용하여 410 영역에 시작 어드레스가 포함된 함수들을 호출한다고 가정한다. 도 2의 단일워드 명령어(200)의 어드레스 비트 개수가 10개 이므로, 410 영역은 210 바이트의 크기를 가질 수 있다. 따라서, 도 4(a) 및 도 4(b)의 실시예를 따를 경우, 상기 단일워드 명령어를 이용하여 상기 호출 횟수가 큰 A 함수 내지 G 함수를 호출할 수 있다.
도 5(a)는 본 발명의 다른 일 실시예에 따라 각각의 함수가 배치되는 순서를 도시한 표이다.
도 5(b)는 도 5(a)의 함수들을 배치하여 생성된 실행 파일(500)을 도시한 도면이다.
도 5(a) 및 도 5(b)를 참조하면, 도 5(a) 및 도 5(b)의 실시예도 우선 도 4(a) 및 도 4(b)의 실시예와 같은 방법으로 상기 함수들을 배치한다. 도 5(b)의 510 영역은 도 4(b)의 410 영역과 동일하다. 도 4(a) 및 도 4(b)의 실시예와 같은 방법으로 상기 함수들을 배치하는 경우 510 영역에 마지막으로 배치되는 함수는 상기 G 함수가 될 것이다. 도 5(a) 및 도 5(b) 실시예에서는 510 영역 내에 마지막으로 함수를 배치하기 전에 상기 배치되지 않은 함수들 중 상기 남은 공간보다 크기가 작은 함수들이 있는지 판단한다. 그리고, 상기 남은 공간보다 크기가 작은 함수 들이 있는 경우, 상기 크기가 작은 함수들 중 호출 횟수 정보가 가장 큰 함수를 먼저 배치하고 나머지 배치되지 않은 함수들 중 호출 횟수 정보가 가장 큰 함수를 배치한다.
이하에서도 도 2의 단일워드 명령어(200)를 이용하여 510 영역에 시작 어드레스가 포함된 함수들을 호출한다고 가정한다. 마지막으로 상기 G 함수를 배치하기 전에 상기 남은 공간은 44 바이트(1024바이트-940바이트)이므로, 배치되지 않은 함수들 중 상기 남은 공간보다 크기가 작은 함수는 K 함수 하나가 있다. 그러므로, 상기 G 함수를 배치하기 전에 상기 K 함수를 먼저 배치하고 상기 G 함수를 배치할 수 있다. 따라서, 도 5(a) 및 도 5(b)의 실시예를 따를 경우, 상기 단일워드 명령어를 이용하여 상기 호출횟수가 큰 상기 A 함수 내지 G 함수를 호출할 수 있을 뿐만 아니라 상기 K 함수도 호출할 수 있다.
도 6은 본 발명의 다른 일 실시예에 따른 실행 파일 생성 방법의 흐름도이다.
도 6을 참조하면, 상기 실행 파일 생성 방법은 각각의 함수의 호출 횟수 정보 및 크기 정보를 검출하는 단계(S610) 및 상기 각각의 함수의 호출 횟수 정보 및 크기 정보를 이용하여 상기 함수들을 배치하는 단계(S620)를 구비할 수 있다.
도 1에서 설명한 바와 같이 링커(160)는 상기 모든 함수의 호출 횟수 정보 및 크기 정보를 알고 있으므로, 각각의 함수의 호출 횟수 정보 및 크기 정보는 도 1의 링커(160)가 분석한 상기 모든 함수의 호출 횟수 정보 및 크기 정보를 이용할 수 있다. 상기 함수의 호출 횟수 정보는 도 3에서 설명한 두 가지 방법 중 하나의 방법에 의하여 결정될 수 있다.
상기 각각의 함수의 호출 횟수 정보 및 크기 정보를 검출한 후, 상기 각각의 함수의 호출 횟수 정보 및 크기 정보를 이용하여 상기 함수들을 배치하여 실행 파일을 생성할 수 있다(S620). 상기 실행 파일을 생성하기 위하여 상기 호출 횟수 정보 및 상기 크기 정보를 이용하여 결정된 호출도를 이용할 수 있다. 즉, 본 발명의 일 실시예에 따를 경우 상기 호출도에 따라 순차적으로 상기 함수들을 배치하여 상기 실행 파일을 생성할 수 있다. 예를 들어, 상기 호출도는 상기 호출 횟수 정보의 상기 크기 정보에 대한 비율로 정의할 수 있다. 즉, 상기 호출도는 상기 호출 횟수 정보를 상기 크기 정보로 나눈 값으로 정의할 수 있다. 다만, 본 발명이 이 경우에 한정되는 것은 아니며 상기 각각의 함수의 호출도는 상기 호출 횟수 정보와 상기 크기 정보의 관계를 정의할 수 있는 값일 수 있다.
도 7(a)는 본 발명의 다른 일 실시예에 따라 각각의 함수가 배치되는 순서를 도시한 표이다.
도 7(b)는 도 7(a)의 함수들을 배치하여 생성된 실행 파일(700)을 도시한 도면이다.
도 7(a)를 참조하면, A 함수 내지 L 함수의 호출 횟수 정보 및 크기 정보를 알 수 있다. 도 7(a)의 A 함수 내지 L 함수의 호출 횟수 정보는 도 3에서 설명한 두 가지 방법 중 하나의 방법에 의하여 결정될 수 있다. 또한, 도 6과 관련하여 설명한 것과 같이 상기 A 함수 내지 L 함수의 호출 횟수 정보 및 크기 정보를 이용하여 각각의 함수의 상기 호출도를 결정할 수 있다. 도 7(a)의 실시예에서는 상기 호 출도를 상기 호출 횟수 정보의 상기 크기 정보에 대한 비율로 정의한다. 다만, 본 발명이 이 경우에 한정되는 것은 아니다. 도 7(a)는 각각의 함수의 호출 횟수 정보 및 크기 정보를 이용하여 결정된 호출도에 따라 상기 A 함수 내지 L 함수를 순차적으로 배치한 것이다. 즉, 상기 호출도가 가장 큰 A 함수부터 내림차순으로 정렬하였다. 도 7(b)는 도 7(a)의 순서, 즉, A 함수, D 함수, I 함수, C 함수, B 함수, G 함수, F 함수, K 함수 및 H 함수의 순서로 배치되어 생성된 실행 파일(700)을 도시하고 있다. 도 7(b)에서는 E 함수, L 함수 및 J 함수에 대하여는 도시하지 않았으나, 상기 H 함수 이후에 순차적으로 배치될 수 있다.
도 7(b)의 710 영역은 상기 단일워드 명령어로 상기 함수들을 호출할 수 있는 공간을 의미한다. 즉, 710 영역은 도 4(b)의 410 영역 및 도 5(b)의 510 영역과 동일하다. 이하에서는 도 2의 단일워드 명령어(200)를 이용하여 710 영역에 시작 어드레스가 포함된 함수들을 호출한다고 가정한다. 도 2의 단일워드 명령어(200)의 어드레스 비트 개수가 10개 이므로, 710 영역은 210 바이트의 크기를 가질 수 있다. 따라서, 도 7(a) 및 도 7(b)의 실시예를 따를 경우, 상기 단일워드 명령어를 이용하여 상기 호출도가 큰 상기 A 함수, D 함수, I 함수, C 함수, B 함수, G 함수, F 함수, K 함수 및 H 함수를 호출할 수 있다.
도 8(a)는 본 발명의 다른 일 실시예에 따라 각각의 함수가 배치되는 순서를 도시한 표이다.
도 8(b)는 도 8(a)의 함수들을 배치하여 생성된 실행 파일(800)을 도시한 도 면이다.
도 8(a) 및 도 8(b)를 참조하면, 도 8(a) 및 도 8(b)의 실시예도 우선 도 7(a) 및 도 7(b)의 실시예와 같은 방법으로 상기 함수들을 배치한다. 도 8(b)의 810 영역은 도 7(b)의 710 영역과 동일하다. 도 7(a) 및 도 7(b)의 실시예와 같은 방법으로 상기 함수들을 배치하는 경우 810 영역에 마지막으로 배치되는 함수는 상기 H 함수가 될 것이다. 도 8(a) 및 도 8(b) 실시예에서는 810 영역 내에 마지막으로 함수를 배치하기 전에 상기 배치되지 않은 함수들 중 상기 남은 공간보다 크기가 작은 함수들이 있는지 판단한다. 그리고, 상기 남은 공간보다 크기가 작은 함수들이 있는 경우, 상기 크기가 작은 함수들 중 호출 횟수 정보가 가장 큰 함수를 먼저 배치하고 나머지 배치되지 않은 함수들 중 호출 횟수 정보가 가장 큰 함수를 배치한다.
이하에서도 도 2의 단일워드 명령어(200)를 이용하여 810 영역에 시작 어드레스가 포함된 함수들을 호출한다고 가정한다. 상기 K 함수를 배치하고 마지막으로 상기 H 함수를 배치하기 전에 상기 남은 공간은 194 바이트(1024바이트-830바이트)이므로, 배치되지 않은 함수들 중 상기 남은 공간보다 크기가 작은 함수는 L 함수 하나가 있다. 그러므로, 상기 K 함수를 배치한 후에 상기 L 함수를 배치한다. 상기 L 함수까지 배치한 경우, 배치되지 않은 나머지 함수들은 E 함수, H 함수 및 J 함수이다. 그러므로, 상기 L 함수를 배치한 후, 상기 E 함수, H 함수 및 J 함수 중 상기 호출 횟수 정보가 가장 큰 상기 E 함수를 배치할 수 있다. 따라서, 도 8(a) 및 도 8(b)의 실시예를 따를 경우, 상기 단일워드 명령어를 이용하여 상기 호출도 가 큰 A 함수, D 함수, I 함수, C 함수, B 함수, G 함수, F 함수 및 K 함수를 호출할 수 있을 뿐만 아니라 나머지 함수들 중 상기 호출 횟수 정보가 큰 L 함수 및 E 함수도 호출할 수 있다.
다만, 도 8(a) 및 도 8(b) 실시예에서 810 영역 내에 마지막으로 함수를 배치하기 전에 상기 배치되지 않은 함수들 중 상기 남은 공간보다 크기가 작은 함수들이 있는지 판단하지 않고, 상기 마지막으로 배치되는 함수 대신 배치되지 않은 나머지 함수들 중 상기 호출 횟수 정보가 가장 큰 함수를 배치할 수도 있다. 예를 들어, 도 7(a) 및 도 7(b)의 실시예에서, 상기 K 함수를 배치한 후 마지막으로 상기 H 함수를 배치하기 전에 배치되지 않은 나머지 함수들(H 함수, E 함수, L 함수 및 J 함수) 중 호출 횟수 정보가 높은 상기 E 함수를 배치할 수도 있다. 이 경우, 상기 단일워드 명령어를 이용하여 상기 호출도가 큰 A 함수, D 함수, I 함수, C 함수, B 함수, G 함수, F 함수 및 K 함수를 호출할 수 있을 뿐만 아니라 나머지 함수들 중 상기 호출 횟수 정보가 가장 큰 E 함수도 호출할 수 있다.
도 9는 본 발명의 일 실시예에 따른 시스템 장치(900)의 블록도이다.
도 9를 참조하면, 시스테 장치(900)는 링커(910), 로더(920), 제어 레지스터(930), 메모리(940) 및 마이크로 프로세서(950)를 구비할 수 있다.
링커(910)는 도 3 내지 도 8(b)의 실시예들 중 하나의 실시예에 따라 상기 실행 파일을 생성할 수 있다. 상기 실행 파일을 생성하는 방법에 대하여는 도 3 내지 도 8(b)와 관련하여 상세하게 설명하였으므로 이하 구체적인 설명은 생략한다. 로더(920)는 링커(910)에서 생성한 실행 파일을 메모리(940)에 저장한다. 마이크로 프로세서(950)는 상기 실행 파일이 실행되는 경우 메모리(940)에 저장된 실행 파일의 함수들을 호출하여 사용할 수 있다.
링커(910)에서 생성한 실행 파일을 메모리(940)에 저장하는 경우, 임의의 주소에서부터 시작하여 상기 실행 파일이 저장될 수 있다. 즉, 상기 실행 파일의 가장 처음에 배치된 함수의 시작 어드레스가 0번지에서 시작되지 않는 경우가 발생할 수 있다. 이 경우, 제어 레지스터(930)를 이용할 수 있다. 제어 레지스터(930)에는 상기 실행 파일의 시작 어드레스 위치가 저장된다. 상기 실행 파일의 시작 어드레스 위치는 링커(910)가 결정할 수도 있고 개발자가 결정할 수도 있다.
예를 들어, 210 번지부터 상기 실행 파일이 저장될 수 있다고 가정하자. 이 경우, 로더(920)는 제어 레지스터(930)에 저장된 값을 이용하여 상기 실행 파일의 시작 어드레스가 210 번지가 되도록 하여 상기 실행 파일을 메모리(940)에 저장한다. 또한, 마이크로 프로세서(950)는 제어 레지스터(930)에 저장된 값을 이용하여 메모리(940)에 저장된 실행 파일의 함수들을 호출하여 사용할 수 있다. 예를 들어, 상기 단일워드 명령어가 0 번지의 시작 어드레스를 가지는 함수를 호출하는 것을 의미하는 경우, 0 번지의 시작 어드레스를 가지는 함수는 210 번지의 시작 어드레스를 가지는 함수와 동일하므로 210 번지의 시작 어드레스를 가지는 함수를 호출할 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정 한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 응용프로그램 개발 과정을 개략적으로 도시한 도면이다.
도 2는 단일워드 명령어의 일 실시예를 도시한 도면이다.
도 3은 본 발명의 일 실시예에 따른 실행 파일 생성 방법의 흐름도이다.
도 4(a)는 본 발명의 일 실시예에 따라 각각의 함수가 배치되는 순서를 도시한 표이다.
도 4(b)는 도 4(a)의 함수들을 배치하여 생성된 실행 파일을 도시한 도면이다.
도 5(a)는 본 발명의 다른 일 실시예에 따라 각각의 함수가 배치되는 순서를 도시한 표이다.
도 5(b)는 도 5(a)의 함수들을 배치하여 생성된 실행 파일을 도시한 도면이다.
도 6은 본 발명의 다른 일 실시예에 따른 실행 파일 생성 방법의 흐름도이다.
도 7(a)는 본 발명의 다른 일 실시예에 따라 각각의 함수가 배치되는 순서를 도시한 표이다.
도 7(b)는 도 7(a)의 함수들을 배치하여 생성된 실행 파일을 도시한 도면이다.
도 8(a)는 본 발명의 다른 일 실시예에 따라 각각의 함수가 배치되는 순서를 도시한 표이다.
도 8(b)는 도 8(a)의 함수들을 배치하여 생성된 실행 파일을 도시한 도면이다.
도 9는 본 발명의 일 실시예에 따른 시스템 장치의 블록도이다.

Claims (11)

  1. 각각의 함수의 호출 횟수 정보를 검출하는 단계; 및
    상기 각각의 함수의 호출 횟수 정보를 이용하여 상기 함수들을 배치하여 실행 파일을 생성하는 단계를 구비하는 것을 특징으로 하는 실행 파일 생성 방법.
  2. 제1항에 있어서, 상기 실행 파일 생성하는 단계는,
    단일 워드 명령어로 호출할 수 있는 소정의 공간 내에 상기 호출 횟수 정보에 따라 순차적으로 상기 함수들의 시작 어드레스가 포함되도록 상기 함수들을 배치하여 실행 파일을 생성하는 단계인 것을 특징으로 하는 실행 파일 생성 방법.
  3. 제1항에 있어서, 상기 검출하는 단계는,
    상기 함수가 상기 다른 함수 내의 호출 지점에서 반복적으로 호출되는 경우, 상기 함수가 한 번 호출된 것으로 판단하여 상기 호출 횟수 정보를 결정하는 단계를 구비하는 것을 특징으로 하는 함수 저장 방법.
  4. 제1항에 있어서, 상기 검출하는 단계는,
    상기 함수가 상기 다른 함수 내의 호출 지점에서 반복적으로 호출되는 경우, 가중치를 부가하여 상기 호출 횟수 정보를 결정하는 단계를 구비하는 것을 특징으로 하는 함수 저장 방법.
  5. 제1항에 있어서, 상기 실행 파일 생성 방법은,
    각각의 함수의 크기 정보를 검출하는 단계를 더 구비하고,
    상기 실행 파일 생성하는 단계는,
    상기 각각의 함수의 호출 횟수 정보 및 크기 정보를 이용하여 상기 함수들을 배치하여 실행 파일을 생성하는 단계인 것을 특징으로 하는 함수 저장 방법.
  6. 제5항에 있어서, 상기 실행 파일을 생성하는 단계는,
    상기 호출 횟수 정보의 상기 크기 정보에 대한 비율인 호출도에 따라 상기 함수들을 순차적으로 배치하여 실행 파일을 생성하는 단계인 것을 특징으로 하는 함수 저장 방법.
  7. 제5항에 있어서, 상기 실행 파일을 생성하는 단계는,
    단일 워드 명령어로 호출할 수 있는 소정의 공간 내에 마지막으로 함수를 배치하는 경우, 저장되지 않은 함수들 중 호출 횟수 정보가 가장 큰 함수를 배치하는 단계를 구비하는 것을 특징으로 하는 함수 저장 방법.
  8. 제1항에 있어서, 상기 실행 파일을 생성하는 단계는,
    단일 워드 명령어로 호출할 수 있는 소정의 공간 내에 마지막으로 함수를 배치하는 경우, 남은 공간보다 크기가 작은 함수가 있는지 판단하는 단계;
    상기 남은 공간보다 크기가 작은 함수들이 있는 경우, 상기 크기가 작은 함수들 중 호출 횟수 정보가 가장 큰 함수를 먼저 배치하고, 나머지 배치되지 않은 함수들 중 호출 횟수 정보가 가장 큰 함수를 배치하는 단계를 구비하는 것을 특징으로 하는 실행 파일 생성 방법.
  9. 각각의 함수의 호출 횟수 정보를 검출하고, 상기 각각의 함수의 호출 횟수 정보를 이용하여 상기 함수들을 배치함으로서 실행 파일을 생성하는 링커;
    상기 실행 파일이 저장되는 메모리; 및
    상기 메모리에 저장된 실행 파일의 함수들을 호출하는 마이크로 프로세서를 구비하는 것을 특징으로 하는 시스템 장치.
  10. 제9항에 있어서, 상기 링커는,
    상기 각각의 함수의 호출 횟수 정보 및 크기 정보를 검출하고, 상기 각각의 함수의 호출 횟수 정보 및 크기 정보를 이용하여 상기 함수들을 배치함으로서 실행 파일을 생성하는 것을 특징으로 하는 시스템 장치.
  11. 제9항에 있어서, 상기 시스템 장치는,
    상기 실행 파일의 시작 어드레스 위치를 저장하는 제어 레지스터를 더 구비하는 것을 특징으로 하는 시스템 장치.
KR1020090018125A 2009-03-03 2009-03-03 실행 파일 생성 방법 및 그 방법을 이용하는 시스템 장치 KR101670916B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090018125A KR101670916B1 (ko) 2009-03-03 2009-03-03 실행 파일 생성 방법 및 그 방법을 이용하는 시스템 장치
US12/693,560 US8566813B2 (en) 2009-03-03 2010-01-26 Method and system generating execution file system device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090018125A KR101670916B1 (ko) 2009-03-03 2009-03-03 실행 파일 생성 방법 및 그 방법을 이용하는 시스템 장치

Publications (2)

Publication Number Publication Date
KR20100099569A true KR20100099569A (ko) 2010-09-13
KR101670916B1 KR101670916B1 (ko) 2016-10-31

Family

ID=42679379

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090018125A KR101670916B1 (ko) 2009-03-03 2009-03-03 실행 파일 생성 방법 및 그 방법을 이용하는 시스템 장치

Country Status (2)

Country Link
US (1) US8566813B2 (ko)
KR (1) KR101670916B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2505564B (en) * 2013-08-02 2015-01-28 Somnium Technologies Ltd Software development tool
US10430318B1 (en) * 2017-07-11 2019-10-01 Juniper Networks, Inc Systems and methods for efficiently performing regression testing on software updates
KR101977265B1 (ko) * 2017-11-08 2019-05-13 한양대학교 산학협력단 패킹된 실행파일의 시작지점 탐지 방법 및 장치

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6006033A (en) * 1994-08-15 1999-12-21 International Business Machines Corporation Method and system for reordering the instructions of a computer program to optimize its execution
JP2001166948A (ja) * 1999-12-07 2001-06-22 Nec Corp プログラム変換方法、プログラム変換装置及びプログラム変換プログラムを記憶した記憶媒体
US6658654B1 (en) * 2000-07-06 2003-12-02 International Business Machines Corporation Method and system for low-overhead measurement of per-thread performance information in a multithreaded environment
JP2003271394A (ja) * 2002-03-19 2003-09-26 Nec Electronics Corp 関数と基本ブロックの配置割付装置および割付最適化プログラム
US7802236B2 (en) * 2002-09-09 2010-09-21 The Regents Of The University Of California Method and apparatus for identifying similar regions of a program's execution
US7343598B2 (en) * 2003-04-25 2008-03-11 Microsoft Corporation Cache-conscious coallocation of hot data streams
JP2005122452A (ja) 2003-10-16 2005-05-12 Ricoh Co Ltd プログラミング容量を低減化するアセンブラ、コンパイラ、リンカ、及びプログラム開発支援システム
US20050155022A1 (en) * 2004-01-14 2005-07-14 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses to identify hot spots
KR100571930B1 (ko) 2004-01-19 2006-04-17 삼성전자주식회사 프린터 드라이버의 사용자 인터페이스 메뉴의 배치 순서재구성 방법
US7512738B2 (en) * 2004-09-30 2009-03-31 Intel Corporation Allocating call stack frame entries at different memory levels to functions in a program
US20060075394A1 (en) * 2004-10-01 2006-04-06 Tatsuya Iwamoto Dynamic loading and unloading for processing unit
US7895588B2 (en) * 2004-12-20 2011-02-22 Sap Ag System and method for detecting and certifying memory leaks within object-oriented applications
US20070150881A1 (en) * 2005-12-22 2007-06-28 Motorola, Inc. Method and system for run-time cache logging
JP2007213257A (ja) 2006-02-08 2007-08-23 Fujitsu Ltd 連携編集方法、連携編集プログラム及び記憶媒体
JP2007293383A (ja) * 2006-04-20 2007-11-08 Toshiba Corp プログラム開発支援装置及びプログラム開発支援装置の動作方法
US8555270B2 (en) * 2006-04-28 2013-10-08 International Business Machines Corporation Profile-based global live-range splitting

Also Published As

Publication number Publication date
US20100229164A1 (en) 2010-09-09
KR101670916B1 (ko) 2016-10-31
US8566813B2 (en) 2013-10-22

Similar Documents

Publication Publication Date Title
US9207918B2 (en) Firmware extension method and firmware builder
US8453128B2 (en) Method and system for implementing a just-in-time compiler
CN108139896A (zh) 扩展虚拟机指令集体系架构
JP2007293383A (ja) プログラム開発支援装置及びプログラム開発支援装置の動作方法
CN109032687A (zh) 屏蔽sdk危险调用的方法及装置
CN112379940A (zh) 一种可执行文件处理方法、装置、电子设备及存储介质
US8887142B2 (en) Loop control flow diversion
KR20100099569A (ko) 실행 파일 생성 방법 및 그 방법을 이용하는 시스템 장치
JP5496792B2 (ja) コード変換プログラム、方法及びシステム
US7926044B2 (en) Method, apparatus and computer program for executing a program
JP2011141676A (ja) 言語処理装置、言語処理方法およびコンピュータプログラムプロダクト
JP2008305337A (ja) プログラム変換装置、プログラム変換方法、プログラム、記憶媒体、デバッグ装置、デバッグ方法及びプログラム開発システム
JP6597356B2 (ja) 制御プログラム、制御装置、及び制御方法
JP2008250838A (ja) ソフトウェア生成装置、方法、およびプログラム
JP2007080049A (ja) 組み込み用プログラム生成方法、組み込み用プログラム開発システム、及び情報テーブル部
JP2009258796A (ja) プログラム開発装置及びプログラム開発方法
US9606779B2 (en) Data processing system and data simulation method in the system
KR20040044655A (ko) 자바 가상머신에서 루프 문 처리를 위해 바이트코드를생성 및 수행하는 방법
JP2005346407A (ja) 動的コンパイルにおけるインライン展開実施方法
CN108460276B (zh) 一种安卓安装包的动态链接库so文件的处理方法和装置
JP2015035174A (ja) 制御プログラム分割装置、制御プログラム分割方法及びその記録媒体
JP2009211491A (ja) プログラム作成方法およびその装置
JP2007200240A (ja) 情報処理装置及び情報処理方法
JP5910197B2 (ja) 組み込み用プログラム開発装置、コンパイル方法およびコンパイラプログラム
JP2009175797A (ja) コンパイル方法及びコンパイラプログラム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant