KR101293389B1 - 보이지 않는 인터페이스를 통해 비 αβι에 따른 특징을 구현하는 방법 및 시스템 - Google Patents

보이지 않는 인터페이스를 통해 비 αβι에 따른 특징을 구현하는 방법 및 시스템 Download PDF

Info

Publication number
KR101293389B1
KR101293389B1 KR1020110034452A KR20110034452A KR101293389B1 KR 101293389 B1 KR101293389 B1 KR 101293389B1 KR 1020110034452 A KR1020110034452 A KR 1020110034452A KR 20110034452 A KR20110034452 A KR 20110034452A KR 101293389 B1 KR101293389 B1 KR 101293389B1
Authority
KR
South Korea
Prior art keywords
routine
name
entry point
alternate
interface
Prior art date
Application number
KR1020110034452A
Other languages
English (en)
Other versions
KR20110114497A (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 인텔 코포레이션
Publication of KR20110114497A publication Critical patent/KR20110114497A/ko
Application granted granted Critical
Publication of KR101293389B1 publication Critical patent/KR101293389B1/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/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)
  • Communication Control (AREA)
  • Exchange Systems With Centralized Control (AREA)

Abstract

본 발명은, 호출자 루틴이 다수의 인터페이스를 통해, 개별적으로 컴파일링된 코드 모듈의 피호출자 루틴에 파라미터를 전송하고, 피호출자 루틴이 그 개별적으로 컴파일링된 코드 모듈의 호출자 루틴으로부터 파라미터를 수신하도록 코드 모듈을 컴파일링하는 방법 및 시스템에 관한 것이다. 인터페이스는, 컨벤션에 따른 인터페이스 및 대체 인터페이스를 포함할 수 있다. 호출자 루틴은 대체 인터페이스를 통해 피호출자 루틴의 대체 엔트리 포인트에 파라미터를 전송하고 피호출자 루틴의 대체 엔트리 포인트에 대해 호출하도록 구성될 수 있다. 관련 스텁 루틴은 컨벤션에 따른 대체 인터페이스를 통해 피호출자 루틴의 컨벤션의 엔트리 포인트에 파라미터를 전송하고 피호출자 루틴의 컨벤션의 엔트리 포인트에 대해 호출하도록 구성될 수 있다. 피호출자 루틴이 대응하는 대체 엔트리 포인트를 포함하는 경우에는 호출자 루틴은 대체 엔트리 포인트에 링크될 수 있다. 포함하지 않은 경우에는 피호출자 루틴은 스텁 루틴을 통해 피호출자 루틴에 링크될 수 있다.

Description

보이지 않는 인터페이스를 통해 비 ΑΒΙ에 따른 특징을 구현하는 방법 및 시스템{METHODS AND SYSTEMS TO IMPLEMENT NON-ABI CONFORMING FEATURES ACROSS UNSEEN INTERFACES}
컴퓨터 프로그램에서, 제 1 컴파일 모듈(compilation module)의 호출자 루틴(caller routine)은 인터페이스를 통해 하나 이상의 파라미터 세트를 별개의 컴파일링된 제 2 컴파일 모듈의 피호출자 루틴(callee routine)으로 전송할 수 있고, 이들 컴파일 모듈은 나중에 링크되어 컴퓨터 시스템 내에서 실행될 수 있다.
인터페이스는 응용 프로그램 2진 인터페이스(ABI : Application Binary Interface) 등의 공인 컨벤션(convention) 또는 표준에 해당할 수 있다. ABI는 컴퓨터 프로그램 간의 로우 레벨 인터페이스(low-level interface)를 기술하고 있으며, 데이터 타입, 사이즈, 및 배열 등의 호출 컨벤션의 상세를 다루고 있어 함수 인자(function argument) 또는 파라미터의 전송 및 리턴을 제어할 수 있다. 윈도우 IA-32 및 리눅스 호출 컨벤션 하에서, 예컨대, 함수 파라미터는 호출 스택(call stack) 상에서 전송된다.
로우 레벨 소프트웨어의 작성자 또는 컴파일러(compiler)는, 컨벤션을 따르지 않는 인터페이스를 생성하거나, 인터페이스가 더 이상 컨벤션을 따르지 않을 정도로 기존의 인터페이스를 수정할 수 있다. 32 비트 윈도우 또는 리룩스 환경에서, 예컨대, 인터페이스는, 호출 스택과 연관된 메모리 로딩/저장을 피하기 위해, 레지스터를 통해 파라미터를 전송하는 것으로 수정될 수 있다.
통상적으로, 수정자(프로그래머 또는 컴파일러)가 피호출자 및 피호출자의 모든 호출자로의 액세스 권한을 가지고 있을 때에는 인터페이스를 생성하거나 컨벤션에 반하여 인터페이스를 수정할 수 있다. 모든 호출자를 이용할 수 없는 경우에는 이용가능한 호출자의 인터페이스는, 피호출자가 수정된 인터페이스와 컨벤션에 따른 인터페이스를 모두 수용하는 것으로 구성되어 있다면, 수정될 수 있으며, 이는 다른 호출자에 의해 사용될 수 있다. 환언하면, 피호출자 루틴, 및 여러 호출자 루틴 중 적어도 하나가 수정된다.
도 1은 제 1 및 제 2 코드 모듈 및 이에 대응하는 제 1 및 제 2 컴파일 모듈을 포함하는 컴퓨팅 환경의 그래픽 도면이다.
도 2는 호출자 루틴 및 스텁 루틴(stub routine)을 포함하는 컴파일 모듈의 그래픽 도면이다.
도 3은 피호출자 루틴을 포함하는 컴파일 모듈의 그래픽 도면이다.
도 4는 호출자 루틴 및/또는 피호출자 루틴을 포함할 수 있는, 코드 모듈을 컴파일링하는 방법의 흐름도이다.
도 5는 복수의 인터페이스 중 하나를 통해 호출자 루틴으로부터 다른 컴파일 모듈의 피호출자 루틴으로 파라미터 세트를 전송하도록 코드 모듈을 컴파일링하는 방법의 흐름도이다.
도 6은 복수의 엔트리 포인트를 피호출자 루틴에 제공하여 복수의 대응하는 인터페이스 중 하나를 통해 파라미터 세트를 수신하도록 코드 모듈을 컴파일링하는 방법의 흐름도이다.
도 7은 제 1 컴파일 모듈의 호출자 루틴을 제 2 컴파일 모듈의 피호출자 루틴에 링크하는 방법을 나타내는 흐름도이다.
도 8은 도 2 및 도 3의 컴파일 모듈을 포함하는 컴퓨터 프로그램의 그래픽 도면이며, 여기서, 호출자 루틴의 호출은 피호출자 루틴의 대체 엔트리 포인트에 링크된다.
도 9는 도 2의 컴파일 모듈과 도 1의 컴파일 모듈을 포함하는 다른 컴퓨터 프로그램의 그래픽 도면이고, 여기서, 호출자 루틴의 호출은 스텁 루틴에 링크되고, 스텁 루틴의 호출은 피호출자 루틴의 엔트리 포인트에 링크된다.
도 10은 단일 인터페이스를 통해 복수의 대응하는 위치로부터의 복수의 파라미터를 전송하는 호출자 루틴을 포함하는 컴파일 모듈의 그래픽 도면이다.
도 11은 복수의 인터페이스 중 하나를 통해 파라미터 세트를 선택적으로 전송하는 호출자 루틴을 포함하는 다른 컴파일 모듈의 그래픽 도면이다.
도 12는 코드 모듈을 컴파일링하고 컴파일 모듈을 링크하도록 구성되는 컴퓨터 시스템의 블럭도이다.
도면에서, 부재 번호 중 제일 왼쪽 자리의 숫자는 그 부재 번호가 가장 먼저 나오는 도면의 번호이다.
본 명세서에는, 다수의 인터페이스를 이용해서 개별적으로 컴파일링된 피호출자 루틴에 파라미터 세트를 전송하고, 피호출자 루틴의 구성을 토대로 그 다수의 인터페이스 중 하나 이상을 통해 그 컴파일링된 호출자 루틴과 컴파일링된 피호출자 루틴을 링크시키도록, 호출자 루틴을 구성하는 방법 및 시스템이 개시되어 있다. 다수의 인터페이스는 컨벤션에 따른 인터페이스 및 대체 인터페이스를 포함할 수 있다. 또한, 본 명세서에는, 다수의 대응하는 인터페이스 중 하나를 통해 다른 컴파일 모듈로부터 파라미터를 수신하도록, 다수의 엔트리 포인트를 구비한 피호출자 루틴을 구성하는 방법 및 시스템이 개시되어 있다.
도 1은 제 1 및 제 2 코드 모듈(102, 104)을 각각 포함하는 컴퓨팅 환경(100)의 그래픽 도면이다. 코드 모듈(102, 104)은 소스 레벨 코드 및/또는 중간 레벨 코드를 포함할 수 있다.
코드 모듈(102)은 코드 모듈(104)의 피호출자 루틴(110)으로의 호출(108)을 가진 호출자 루틴(106)을 포함한다.
호출(108)은, 런 타임 중에 피호출자 루틴(110)으로 전송할 하나 이상의 파라미터(114)의 세트(예를 들어, PARM1 및 PARM2)의 명칭(112) 및 표시자 또는 식별자를 포함할 수 있다.
피호출자 루틴(110)은 그 파라미터 세트에 대해서 하나 이상의 함수를 수행하는 함수 코드(111)를 포함할 수 있다.
환경(100)은 코드 모듈(102, 104)을 컴파일링해서 대응하는 제 1 및 제 2 컴파일 모듈(118, 120)을 생성하는 컴파일러(116)를 포함할 수 있다. 이와 달리, 코드 모듈(102, 104) 중 하나는 다른 컴파일러에 의해 컴파일링될 수 있다. 컴파일 모듈(118, 120)은 머신 판독가능 코드를 포함할 수 있다.
컴파일 모듈(118)은 호출자 루틴(106)에 대응하는 호출자 루틴(122)을 포함한다. 호출자 루틴(122)은 호출자 루틴(106)의 호출(108)에 대응하는 호출(126)을 포함한다.
컴파일 모듈(120)은 명칭(112)을 이용하여 식별되는 엔트리 포인트(125)를 가진 피호출자 루틴(124)을 포함하며, 이 루틴은 피호출자 루틴(110)에 대응한다. 피호출자 루틴(124)은 함수 코드(111)에 대응하는 함수 코드(128)를 더 포함한다.
코드 모듈(102, 104)이 서로 개별적으로 컴파일링되는 경우에, 호출자 루틴(122)과 피호출자 루틴(124)은, 컨벤션 및/또는 표준에 따라, 파라미터 세트(114)를 전송하도록 구성될 수 있는데, 이는 호출 스택 상에서 제한 없이 파라미터를 전송하는 것을 포함할 수 있다.
도 1의 예에서, 호출자 루틴(122)은 호출 스택을 통해 파라미터 세트(114)를 전송하는 인터페이스 코드(130)를 포함하며, 피호출자 루틴(124)은 엔트리 포인트(125)에의 진입시에 호출 스택을 통해 파라미터 세트(114)를 수신하는 인터페이스 코드(132)를 포함한다. 호출 스택 및 임의의 포맷 요건을 인터페이스라고 부를 수 있다.
컴파일러(116)는 컨벤션에 따라 인터페이스 코드(130)를 생성하는 컨벤션 생성자(constructor)에 따른 인터페이스와, 컨벤션에 따라 엔트리 포인트(125) 및 대응하는 인터페이스 코드(132)를 생성하는 컨벤션 생성자(144)에 따른 엔트리 포인트를 포함할 수 있다.
이와 달리, 다른 컴파일러에 의해 컴파일 모듈(118) 또는 컴파일 모듈(120)이 생성되는 경우에, 대응하는 인터페이스 코드는 다른 컴파일러에 의해 생성될 수 있다.
환경(100)은, 컴파일 모듈(118, 120)을 링크시켜서, 컴퓨터 시스템으로 하여금 컴파일 모듈(118, 120)을 하나의 통합된 컴퓨터 프로그램(137)으로서 실행하게 할 수 있는 링크 시스템(136)을 포함한다. 도 1은 호출(126)로부터 피호출자 루틴(124)의 엔트리 포인트(125)로의 링크(138)를 포함한다.
일부 상황에서는, 컨벤션을 따르지 않는 대체 인터페이스를 통해 파라미터를 전송하는 것이 바람직할 수 있다. 예컨대, 도 1에서, 피호출자 루틴(124)의 인터페이스 코드(132)가 호출 스택으로부터 레지스터(R1, R2)로 파라미터 세트(114)를 각각 로딩하는 것으로 구성되어 있다. 함수 코드(128)는 레지스터(R1, R2) 내의 파라미터에 액세스하도록 구성될 수 있다. 이러한 상황에서는, 호출자 루틴(122)과 피호출자 루틴(124)이 레지스터(R1, R2)를 통해 파라미터 세트(114)를 전송하도록 구성하는 것이 바람직할 수 있다.
컴파일러(116)는, 도 3과 관련하여 후술하는 바와 같이, 피호출자 루틴 내에 대체 엔트리 포인트를 생성하는 대체 엔트리 포인트 생성자(145)를 포함할 수 있다.
컴파일러(116)는, 도 2와 관련하여 후술하는 바와 같이, 대체 인터페이스 및 대응하는 대체 호출을 피호출자 루틴 내의 대체 엔트리 포인트에 생성하는 대체 인터페이스 생성자(146)를 더 포함할 수 있다.
컴파일러(116)는 호출자 루틴에 대해 컨벤션에 따른 인터페이스 및 대체 인터페이스를 생성하도록 구성될 수 있으며, 이로써, 호출자 루틴은 적절히 수정된 피호출자 루틴 또는 수정되지 않은 피호출자 루틴에 대해 호출할 수 있게 된다.
마찬가지로, 컴파일러(116)는 컨벤션에 따른 엔트리 포인트, 컨벤션에 따른 대응 인터페이스, 및 대체 엔트리 포인트를, 피호출자 루틴에 대하여 생성하도록 구성될 수 있으며, 이로써, 피호출자 루틴은 적절히 수정된 호출자 루틴과 수정되지 않은 호출자 루틴에 의해 호출될 수 있다.
링크 시스템(136)은, 도 8과 관련하여 후술하는 바와 같이, 호출자 루틴과 피호출자 루틴이 모두 적절히 구성된 경우에는 대체 인터페이스를 통해서, 또한, 도 9와 관련하여 후술하는 바와 같이, 적절히 구성되지 않는 경우에는 컨벤션에 따른 인터페이스를 통해서, 호출자 루틴을 피호출자 루틴에 선택적으로 링크시키도록 구성될 수 있다.
상술한 예에서, 대체 인터페이스, 대체 호출, 및 대체 엔트리 포인트는 컴파일러(116)에 의해 생성되는 것으로서 기술되어 있다. 이와 달리, 대체 인터페이스 및 대응하는 대체 호출, 또는 대체 엔트리 포인트는, 사용자 입력에 응답하여 머신 코드 에디터(editor) 등을 이용하여, 컴파일 이후에 생성될 수 있다.
도 2는 호출자 루틴(202)과 스텁 루틴(204)을 포함하는 컴파일 모듈(200)의 그래픽 도면이다.
컴파일 모듈(200)은 도 1의 코드 모듈(102)로부터 컴파일러(116)에 의해 생성될 수 있다. 이와 달리, 도 1의 컴파일 모듈(118)이 다른 컴파일러에 의해 생성되는 경우에는 도 2의 컴파일 모듈(200)은 사용자 입력에 응답하여 머신 코드 에디터 등에 의해 컴파일 모듈(118)로부터 생성 또는 수정될 수 있다.
호출자 루틴(202)은, 본 명세서에서는 Bar_bair_2로서 예시된 명칭(208)에 대한 호출(206)을 포함한다. 호출자 루틴(202)은, 본 명세서에서 레지스터(R1, R2)로서 예시된 제 1 인터페이스를 통해 파라미터 세트(114)(예컨대, PARM1 및 PARM2)를 전송하는 대응 인터페이스 코드(210)를 더 포함한다. 제 1 인터페이스가 대체 인터페이스에 대응할 수 있으며, 호출(206)이 대체 호출로서 간주될 수 있다.
명칭(208)은 도 1의 호출자 루틴(106)의 호출 명칭(112)에 따라서 생성될 수 있다. 명칭(208)은 파라미터 세트(114) 내의 파라미터의 개수와 제 1 인터페이스의 명칭에 따라서 추가로 생성될 수 있다. 예컨대, "bair"는 "레지스터 내의 블라인드 인수"를 나타낼 수 있으며, "2"는 파라미터 세트(114) 내의 파라미터의 개수를 나타낼 수 있다. 명칭(208)이 대체 명칭으로서 간주될 수 있다.
스텁 루틴(204)은 명칭(112)에 대한 호출(126), 및 제 2 인터페이스(예컨대, 호출 스택)를 통해 제 1 인터페이스(예컨대, R1 및 R2)로부터 파라미터 세트(114)를 전송하는 대응 인터페이스 코드(218)를 포함한다.
스텁 루틴(204)은, 링크 시스템(136)이 호출자 루틴(202)을 스텁 루틴(204)에 링크할 때 이용하는 호출자 루틴(202)과 연관되어 있을 수 있다. 예컨대, 스텁 루틴(204)의 엔트리 포인트(212)는, 본 명세서에서 weak.Bar_bair_2로서 예시된 대체 명칭(208)의 "위크(weak)" 버전으로서 명명될 수 있다.
도 3은 피호출자 루틴(302)을 포함하는 컴파일 모듈(300)의 그래픽 도면이다.
컴파일 모듈(300)은 도 1의 코드 모듈(104)로부터 컴파일러(116)에 의해 생성될 수 있다. 이와 달리, 도 1의 컴파일 모듈(120)이 다른 컴파일러에 의해 생성되는 경우에, 컴파일 모듈(300)은, 사용자 입력에 응답하여 머신 코드 에디터 등에 의해 컴파일 모듈(120)로부터 생성 또는 수정될 수 있다.
피호출자 루틴(302)은, 도 1의 피호출자 루틴(124)과 관련하여 상술한 바와 같이, 엔트리 포인트(125) 및, 호출 스택을 통해 파라미터 세트(114)를 수신하는 대응 인터페이스 코드(132)를 포함한다. 엔트리 포인트(125)는 컨벤션에 따른 엔트리 포인트에 대응할 수 있으며, 인터페이스 코드(132)는 컨벤션에 따른 인터페이스에 대응할 수 있다.
피호출자 루틴(302)은 인터페이스 코드(132)와 함수 코드(128) 사이에 도시되어 있는 대체 엔트리 포인트(304)를 포함할 수 있다.
인터페이스 코드(132)는 호출 스택으로부터 레지스터(R1, R2)로 파라미터 세트(114)를 이동시키도록 구성될 수 있으며, 함수 코드(126)는 도 1의 피호출자 루틴(124)과 관련하여 상술한 바와 같이 레지스터(R1, R2)의 파라미터 세트(114)에 액세스하도록 구성될 수 있다.
이러한 상황에서, 대체 엔트리 포인트(304)는 대응 인터페이스 코드를 필요로 하지 않는다. 다른 상황에서, 엔트리 포인트(304)는 파라미터 세트(114)를 재배치 및/또는 포맷하는 인터페이스 코드를 포함할 수 있다.
예시적인 방법이 도 4 내지 도 7과 관련하여 또한 본 명세서의 하나 이상의 다른 예와 관련하여 이하에 기술된다. 그러나, 도 4 내지 도 7의 예는 이러한 다른 예로 한정되지 않는다.
도 4는, 호출자 루틴 및/또는 피호출자 루틴을 포함할 수 있는, 코드 모듈을 컴파일링하는 방법(400)의 흐름도이다.
단계(402)에서, 코드 모듈이 수신된다. 도 1에서는, 컴파일러(116)가 코드 모듈(102) 및/또는 코드 모듈(104)을 수신할 수 있다.
단계(404)에서, 도 1의 호출자 루틴(106)과 같은 코드 모듈 내의 호출자 루틴이 평가된다. 호출자 루틴이 코드 모듈에 존재하지 않는 명칭을 호출하는 경우에는 프로세싱은 단계(406)로 진행하고, 단계(406)에서는, 이하에 설명되는 도 5에 따라서 호출자 루틴이 컴파일링된다. 단계(404)에서의 평가 및 단계(406)에서의 컴파일링은 하나 이상의 추가적인 호출자 루틴에 대해 반복될 수 있다.
단계(408)에서, 코드 모듈 내의 피호출자 루틴이 평가된다. 피호출자 루틴이 코드 모듈의 외측으로부터 호출가능한 경우에는 프로세싱은 단계(410)로 진행되고, 단계(1410)에서는, 이하에 설명되는 도 6에 따라 피호출자 루틴이 컴파일링된다. 단계(408)에서의 평가 및 단계(410)에서의 컴파일링은 하나 이상의 추가적인 피호출자 루틴에 대해 반복될 수 있다.
단계(412)에서, 종래의 컴파일링 기술 등에 따라서, 코드 모듈의 다른 코드가 컴파일링될 수 있다.
도 4와 관련하여 상술한 특징 및/또는 이들 특징의 일부가, 하나 이상의 다양한 순서로, 동시에, 및/또는 통합된 방식으로 수행될 수 있다.
도 5는 복수의 인터페이스 중 하나를 통해 호출자 루틴으로부터 다른 컴파일 모듈의 피호출자 루틴으로 파라미터 세트를 전송하도록, 코드 모듈을 컴파일링하는 방법(500)의 흐름도이다.
단계(502)에서, 호출자 루틴은, 코드 모듈 내에서, 코드 모듈 내에 존재하지 않는 명칭에 대한 호출을 가지는 것으로서 식별된다.
단계(504)에서, 대체 포인트 명칭이 생성된다. 대체 포인트 명칭은, 호출 명칭, 제 1 인터페이스의 표시자, 및 제 1 인터페이스를 통해 전송되는 파라미터의 개수에 따라서 생성될 수 있다.
단계(506)에서, 도 2의 엔트리 포인트(212)와 관련하여 상술한 바와 같이, 대체 명칭의 위크 버전이 생성된다.
단계(508)에서, 도 2의 호출자 루틴(202)과 관련하여 상술한 바와 같이, 대체 명칭을 호출하고 제 2 인터페이스를 통해 파라미터 세트를 전송하도록 호출자 루틴이 컴파일링된다.
단계(510)에서, 코드 모듈은, 제 2 인터페이스를 통해 제 1 인터페이스로부터의 명칭을 호출하고 파라미터 세트를 전송하는 스텁 루틴을 포함하도록 컴파일링되어 있다. 스텁 루틴, 또는 스텁 루틴에 대한 엔트리 포인트는, 도 2의 스텁 루틴(204)과 관련하여 상술한 바와 같이, 대체 명칭의 위크 버전을 이용하여 식별된다.
도 6은 복수의 대응하는 인터페이스 중 하나를 통해 파라미터 세트를 수신하는 피호출자 루틴에 복수의 엔트리 포인트를 제공하도록, 코드 모듈을 컴파일링하는 방법(600)의 흐름도이다.
단계(602)에서, 피호출자 루틴은, 코드 모듈 내에서, 그 코드 모듈의 외측으로부터 호출가능한 것으로서, 식별된다.
단계(604)에서, 대체 엔트리 포인트 명칭이 생성된다. 대체 엔트리 포인트 명칭은, 피호출자 루틴의 명칭, 대체 인터페이스의 표시자, 및 대체 인터페이스를 통해 전송되는 파라미터의 개수의 함수로서 생성될 수 있다.
단계(606)에서, 피호출자 루틴은, 컨벤션에 따른 인터페이스를 통해 파라미터 세트를 수신하는 제 1 엔트리 포인트와, 대체 인터페이스를 통해 파라미터 세트를 수신하는 대체 엔트리 포인트를 포함하도록 컴파일링되어 있다. 도 3의 피호출자 루틴(302)과 관련하여 상술한 바와 같이, 제 1 엔트리 포인트는 피호출자 루틴의 명칭을 이용하여 식별될 수 있으며, 대체 엔트리 포인트는 대체 엔트리 포인트 명칭을 이용하여 식별될 수 있다.
도 7은 제 1 컴파일 모듈의 호출자 루틴을 제 2 컴파일 모듈의 피호출자 루틴에 링크하는 방법(700)의 흐름도이다.
단계(702)에서, 도 1의 링크 시스템(136)에서와 같이, 제 1 및 제 2 컴파일 모듈이 수신된다. 제 1 컴파일 모듈은 도 2의 컴파일 모듈(200)에 대응할 수 있다. 제 2 컴파일 모듈은 도 1의 컴파일 모듈(120) 또는 도 3의 컴파일 모듈(300)에 대응할 수 있다.
단계(704)에서, 방법(600)에 따라서 구성된 제 1 컴파일 모듈의 호출자 루틴 및 관련 스텁 루틴이 식별된다. 호출자 루틴 및 관련 스텁 루틴은 도 2의 호출자 루틴(202) 및 스텁 루틴(200)에 대응할 수 있다.
단계(706)에서, 스텁 루틴의 호출에 대응하는 제 1 엔트리 포인트를 구비한 제 2 컴파일 모듈의 피호출자 루틴이 식별된다. 피호출자 루틴은 도 1의 피호출자 루틴(124) 또는 도 3의 피호출자 루틴(302)에 대응할 수 있다.
단계(708)에서, 피호출자 루틴이 평가된다. 피호출자 루틴이 도 6의 단계(606)와 관련하여 상술한 대체 엔트리 포인트를 포함하는 경우에, 프로세싱은 단계(710)로 진행한다. 피호출자 루틴이 이러한 대체 엔트리 포인트를 포함하지 않는 경우에, 프로세싱은 단계(712)로 진행한다.
단계(710)에서, 호출자 루틴은 피호출자 루틴의 대체 엔트리 포인트에 링크되어 있다. 도 8은 도 2의 컴파일 모듈(200)과 도 3의 컴파일 모듈(300)을 포함하는 컴퓨터 프로그램(800)의 그래픽 도면이며, 여기서, 호출(206)은 링크(802)를 이용하여 피호출자 루틴(302)의 대체 엔트리 포인트(304)에 링크되어 있다.
단계(712)에서, 호출자 루틴은 스텁 루틴에 링크되어 있으며, 스텁 루틴은 피호출자 루틴의 제 1 엔트리 포인트에 링크되어 있다. 도 9는 도 2의 컴파일 모듈(200)과 도 1의 컴파일 모듈(120)을 포함하는 컴퓨터 프로그램(900)의 그래픽 도면이며, 여기서, 호출(206)은 링크(902)를 이용하여 스텁 루틴(204)에 링크되어 있으며, 스텁 루틴(204)의 호출(126)은 링크(904)를 이용하여 피호출자 루틴(124)의 엔트리 포인트(125)에 링크되어 있다.
상술한 예에서, 2개의 파라미터(PARM1 및 PARM2)는 레지스터(R1, R2) 또는 호출 스택을 통해 전송된다. 그러나, 본 명세서에 기술되는 방법 및 시스템은 레지스터 또는 호출 스택으로 한정되지 않는다.
대체 인터페이스는 태스크 및/또는 논리 연산을 수행하도록 구성될 수 있다. 태스크 및 논리 연산의 예가 이하에 기술된다. 그러나, 대체 인터페이스는 이하의 예로 한정되지 않는다.
도 10과 관련하여 후술하는 바와 같이, 대체 인터페이스는, 다수의 위치로부터의 복수의 파라미터를 조합하고, 그 조합된 파라미터를 하나의 위치를 통해서 전송하도록 구성될 수 있다.
도 11과 관련하여 후술하는 바와 같이, 대체 인터페이스는, 선택가능한 복수의 인터페이스 중 하나를 통해 파라미터 세트를 전송하도록 구성될 수 있다.
대체 인터페이스는 제 1 인터페이스를 통해 제 1 파라미터 세트를, 제 2 인터페이스를 통해 제 2 파라미터 세트를 전송하도록 구성될 수 있다.
도 10은 호출자 루틴(1002)과 스텁 루틴(1004)을 포함하는 컴파일 모듈(1000)의 그래픽 도면이다. 호출자 루틴(1002)은, 본 명세서에서 레지스터(R1)로서 예시된 단일의 대체 인터페이스를 통해 다수의 위치로부터의 복수의 파라미터를 전송하는, 대체 호출(1006) 및 대응하는 대체 인터페이스 코드(1006)를 포함할 수 있다. 대체 인터페이스 코드(1006)는 레지스터에 로딩하기 전에 파라미터를 조합 또는 조정하도록 구성될 수 있다. 상술한 하나 이상의 예에서 기술한 바와 같이, 스텁 루틴(1004)은 컨벤션에 따른 복수의 파라미터를 전송하도록 구성될 수 있다.
도 11은 호출자 루틴(1102) 및 스텁 루틴(1104)을 포함하는 컴파일 모듈(1100)의 그래픽 도면이다. 호출자 루틴(1102)은 피호출자 루틴의 대응하는 복수의 대체 엔트리 포인트로 향하는 복수의 대체 호출(1106, 1108)을 포함한다. 대체 호출(1106)은, 본 명세서에서 레지스터(R1, R2)로서 예시된 제 1 대체 인터페이스를 통해 파라미터 세트를 전송하는 대체 인터페이스 코드(1110)를 포함한다. 대체 호출(1109)은, 파라미터 세트를 조합하고, 그 조합된 파라미터 세트를, 본 명세서에서 레지스터(R1)로서 예시된 제 2 대체 인터페이스를 통해 전송하는 대체 인터페이스 코드(1112)를 포함한다.
호출자 루틴(1102)은 가정(contingency) "A"에 근거하여 대체 호출(1106) 및 대체 호출(1108)을 선택적으로 불러내는 가정 로직(1114, 1116)을 더 포함한다. 가정은 하나 이상의 파라미터의 값 및/또는 하나 이상의 조건과 관련되어 있다.
스텁 루틴(1104)은, 피호출자 루틴이 대체 엔트리 포인트를 포함하지 않는 경우에, 컨벤션에 따라 파라미터 세트를 전송하도록 구성될 수 있다.
본 명세서에 기술된 하나 이상의 특징은, 분산형 논리 회로 및 통합형 논리 회로, ASIC 로직, 및 마이크로콘트롤러를 포함한, 하드웨어, 소프트웨어, 펌웨어, 및 이들의 조합으로 구현될 수 있으며, 도메인 지정의 집적 회로 패키지의 일부분 또는 집적 회로 패키지의 조합으로서 구현될 수 있다. 본 명세서에서 사용된 소프트웨어, 코드 및 명령어의 용어는, 컴퓨터 시스템으로 하여금, 본 명세서에 기술되는 하나 이상의 특징 및/또는 이들 특징의 조합을 수행하게 하는 컴퓨터 프로그램 로직이 내부에 저장된 컴퓨터 판독가능한 매체를 포함하는 컴퓨터 프로그램 제품을 지칭한다.
도 12는, 컴퓨터 프로그램 제품 로직을 실행하는 하나 이상의 컴퓨터 명령어 프로세싱 유닛(본 명세서에서는 프로세서(1202)로서 예시됨)을 포함하는 예시적인 컴퓨터 시스템(1200)의 블록도이다.
컴퓨터 시스템(1200)은 하나 이상의 메모리, 캐시, 레지스터, 및 저장 장치(이하, "메모리")(1204)를 포함한다.
메모리(1204)는, 프로세서(1202)로 하여금 그에 응답하여 하나 이상의 함수를 수행하게 하는 컴퓨터 프로그램 제품 로직(1206)이 내부에 저장되어 있는 컴퓨터 판독가능한 매체를 포함한다.
메모리(1204)는, 로직(1206)을 실행할 때 프로세서(1202)에 의해 사용되고, 및/또는 로직(1206)의 실행에 응답하여 프로세서(1202)에 의해 생성되는 데이터(1208)를 더 포함한다.
데이터(1208)는 도 1의 코드 모듈(102) 및/또는 코드 모듈(104)을 포함할 수 있다.
로직(1206)은, 상술한 하나 이상의 예에서 기술한 바와 같이, 프로세서(1202)로 하여금, 코드 모듈(102) 및/또는 코드 모듈(104)을 컴파일링해서 대응하는 컴파일 모듈(200, 300)을 생성하게 하는 컴파일러 로직(1210)을 포함한다. 이와 달리, 코드 모듈(102) 또는 코드 모듈(104)이 다른 컴파일러에 의해 컴파일링되어서 컴파일 모듈(118) 또는 컴파일 모듈(120)을 각각 생성할 수도 있다.
컴파일러 로직(1210)은, 상술한 하나 이상의 예에서 기술한 바와 같이, 프로세서(1202)로 하여금 호출자 루틴이 컨벤션에 따라 파라미터 세트를 전송할 수 있게 하는 인터페이스 코드를 생성하게 하는 컨벤션에 따른 인터페이스 로직(1212)을 포함할 수 있다.
컴파일러 로직(1210)은, 상술한 하나 이상의 예에서 기술한 바와 같이, 프로세서(1202)로 하여금 호출자 루틴이 대체 인터페이스를 통해 파라미터 세트를 전송하게 하는 대체 인터페이스 코드를 생성하게 하는 대체 인터페이스 로직(1214)을 포함할 수 있다.
컴파일러 로직(1210)은, 상술한 하나 이상의 예에서 기술한 바와 같이, 프로세서(1202)로 하여금 피호출자 루틴이 컨벤션에 따라 파라미터 세트를 수신하게 하는 엔트리 포인트 및 대응하는 인터페이스 코드를 생성하게 하는 컨벤션 로직(1216)에 따른 엔트리 포인트를 포함할 수 있다.
컴파일러 로직(1210)은, 상술한 하나 이상의 예에서 기술한 바와 같이, 프로세서(1202)로 하여금 피호출자 루틴이 대체 인터페이스를 통해 파라미터 세트를 수신하게 하는 대체 엔트리를 생성하게 하는 대체 엔트리 포인트 로직(1218)을 포함할 수 있다.
로직(1206)은, 상술한 하나 이상의 예에서 기술한 바와 같이, 호출자 루틴을 피호출자 루틴의 대체 엔트리 포인트에 선택적으로 링크하거나, 스텁 루틴을 통해 호출자 루틴을 피호출자 루틴에 링크하는 것을 포함하여, 프로세서(1202)로 하여금 다수의 컴파일 모듈을 링크하게 하는 링크 로직(1220)을 포함할 수 있다.
컴퓨터 시스템(1200)은, 컴퓨터 시스템(1200) 내에서 통신하는 통신 인프라스트럭션(1240)과, 인터넷 등의 네트워크 통신 시스템을 통해 하나 이상의 다른 컴퓨터 시스템과 인터페이스하는 입력/출력 제어기(1242)를 포함할 수 있다.
방법 및 시스템은, 함수적인 구축 블록으로 함수, 특징, 이들의 관계를 예시할 목적으로 본 명세서에 기술되어 있다. 하나 이상의 이러한 범위는 설명의 편의성을 위해 본 명세서에서 임의로 정의될 수 있다. 대체 범위가 정의될 수 있다.
본 명세서에 여러 실시예가 기술되어 있지만, 이들 실시예는 제한적인 것이 아니라 예시적으로 제공되었음을 알아야 한다. 당업자라면 본 명세서에 기술된 방법 및 시스템의 사상과 범위로부터 벗어나지 않고 형태 및 세부 사항에 대한 여러 변경이 이루어질 수 있음을 알 수 있다. 따라서, 청구범위는 본 명세서에 기술된 임의의 하나의 예에 의해 한정되지 않아야 한다.
100 : 컴퓨팅 환경 102, 104 : 코드 모듈
106 : 호출자 루틴 108 : 호출
110 : 피호출자 루틴 112 : 명칭
114 : 파라미터 세트 116 : 컴파일러
118, 120 : 컴파일 모듈 122 : 호출자 루틴
124 : 피호출자 루틴 125 : 엔트리 포인트
128 : 함수 코드 130, 132 : 인터페이스 코드
136 : 링크 시스템 138 : 링크
144 : 컨벤션 생성자 R1, R2 : 레지스터
145 : 대체 엔트리 포인트 생성자

Claims (20)

  1. 코드 모듈로부터 제 1 컴파일 모듈(compilation module)을 생성하는 컴파일러를 포함하되,
    상기 컴파일러는,
    제 1 코드 모듈에 존재하지 않는 명칭에 대해 호출하는 호출자 루틴(caller routine)을 식별하고,
    상기 명칭에 대한 함수로서 대체 명칭(alternate name)을 생성하며, 상기 대체 명칭의 위크 버전(a weak version of the alternate name)을 생성하고,
    제 1 인터페이스를 통해 하나 이상의 파라미터 세트를 전송하고 상기 대체 명칭에 대해 호출하도록, 상기 호출자 루틴을 컴파일링하고,
    상기 대체 명칭의 위크 버전을 이용하여 식별되는 엔트리 포인트를 구비하고 상기 제 1 인터페이스로부터 제 2 인터페이스를 통해서 상기 파라미터 세트를 전송하고 상기 명칭에 대해 호출하도록 구성되는 스텁 루틴(stub routine)을 포함하도록, 상기 제 1 코드 모듈을 컴파일링하는
    시스템.
  2. 제 1 항에 있어서,
    상기 제 1 컴파일 모듈을, 상기 명칭을 이용하여 식별되는 제 1 엔트리 포인트를 구비한 피호출자 루틴(callee routine)을 포함하는 제 2 컴파일 모듈과 링크시키는 링크 시스템을 더 포함하되,
    상기 링크 시스템은, 상기 피호출자 루틴이 상기 대체 명칭을 가진 상기 피호출자 루틴의 대체 엔트리 포인트를 포함하는 경우에는 상기 대체 엔트리 포인트에 상기 호출자 루틴을 링크시키고, 상기 피호출자 루틴이 상기 대체 엔트리 포인트를 포함하지 않은 경우에는 상기 호출자 루틴을 스텁 루틴의 엔트리 포인트에 링크시키고 상기 스텁 루틴을 상기 피호출자 루틴의 상기 제 1 엔트리 포인트에 링크시키도록 구성되는
    시스템.
  3. 제 1 항에 있어서,
    상기 컴파일러는,
    제 2 코드 모듈 내의 피호출자 루틴을 식별하고,
    상기 피호출자 루틴의 명칭에 대한 함수로서 대체 엔트리 포인트 명칭을 생성하고,
    상기 피호출자 루틴의 명칭을 갖고 있으며 상기 제 2 인터페이스를 통해 상기 파라미터 세트를 수신하도록 구성되는 제 1 엔트리 포인트를 포함하고, 상기 대체 엔트리 포인트 명칭을 갖고 있으며 상기 제 1 인터페이스를 통해 상기 파라미터 세트를 수신하도록 구성되는 대체 엔트리 포인트를 포함하도록 상기 식별된 피호출자 루틴을 컴파일링하도록 더 구성되는
    시스템.
  4. 제 1 항에 있어서,
    상기 제 2 인터페이스는 컨벤션(a convention)에 대응하며,
    상기 제 1 인터페이스는 상기 컨벤션에 대응하지 않는
    시스템.
  5. 제 1 항에 있어서,
    상기 제 1 인터페이스는 레지스터에 대응하고,
    상기 제 2 인터페이스는 호출 스택(call stack)에 대응하는
    시스템.
  6. 제 1 항에 있어서,
    상기 컴파일러는, 상기 대체 명칭을, 상기 명칭, 상기 제 1 인터페이스의 표시자, 및 상기 파라미터 세트 내의 파라미터의 개수의 함수로서 생성하도록 더 구성되는
    시스템.
  7. 제 1 컴파일 모듈을 생성하도록 코드 모듈을 컴파일링하는 단계를 포함하되,
    상기 컴파일링 단계는
    제 1 코드 모듈에 존재하지 않는 명칭에 대해 호출하는 호출자 루틴을 식별하는 단계와,
    대체 명칭을 상기 명칭의 함수로서 생성하는 단계와,
    상기 대체 명칭의 위크 버전을 생성하는 단계와,
    제 1 인터페이스를 통해서 상기 명칭에 하나 이상의 파라미터 세트를 전송하고 상기 대체 명칭에 대해 호출하도록, 상기 호출자 루틴을 컴파일링하는 단계와,
    상기 대체 명칭의 위크 버전을 이용하여 식별되는 엔트리 포인트를 구비하고 상기 제 1 인터페이스로부터 제 2 인터페이스를 통해서 상기 파라미터 세트를 전송하고 상기 명칭에 대해 호출하도록 구성되는 스텁 루틴을 포함하도록, 상기 제 1 코드 모듈을 컴파일링하는 단계를 포함하되,
    상기 컴파일링 단계는 적합하게 프로그래밍된 컴퓨터 시스템에서 수행되는
    방법.
  8. 제 7 항에 있어서,
    상기 제 1 컴파일 모듈을, 상기 명칭을 이용하여 식별되는 제 1 엔트리 포인트를 구비한 피호출자 루틴을 포함하는 제 2 컴파일 모듈과 링크시키는 단계를 더 포함하되,
    상기 피호출자 루틴이 상기 대체 명칭을 가진 상기 피호출자 루틴의 대체 엔트리 포인트를 포함하는 경우에는 상기 대체 엔트리 포인트에 상기 호출자 루틴을 링크시키고, 상기 피호출자 루틴이 상기 대체 엔트리 포인트를 포함하지 않은 경우에는 상기 호출자 루틴을 상기 스텁 루틴의 엔트리 포인트에 링크시키고, 상기 스텁 루틴을 상기 피호출자 루틴의 상기 제 1 엔트리 포인트에 링크시키는 단계를 포함하는
    방법.
  9. 제 7 항에 있어서,
    상기 컴파일링 단계는,
    제 2 코드 모듈 내의 피호출자 루틴을 식별하는 단계와,
    상기 피호출자 루틴의 명칭의 함수로서 대체 엔트리 포인트 명칭을 생성하는 단계와,
    상기 피호출자 루틴의 명칭을 갖고 있으며 상기 제 2 인터페이스를 통해 상기 파라미터 세트를 수신하도록 구성되는 제 1 엔트리 포인트를 포함하고, 상기 대체 엔트리 포인트 명칭을 갖고 있으며 상기 제 1 인터페이스를 통해 상기 파라미터 세트를 수신하도록 구성되는 대체 엔트리 포인트를 포함하도록, 상기 식별된 피호출자 루틴을 컴파일링하는 단계를 더 포함하는
    방법.
  10. 제 7 항에 있어서,
    상기 컴파일링 단계는, 복수의 인터페이스 중 선택된 인터페이스를 통해 상기 파라미터 세트를 전송하도록, 상기 호출자 루틴을 컴파일링하는 단계를 더 포함하는
    방법.
  11. 제 10 항에 있어서,
    상기 컴파일링 단계는, 상기 파라미터 세트에 속한 파라미터의 값에 근거하여, 상기 복수의 인터페이스 중 선택된 인터페이스를 통해 상기 파라미터 세트를 전송하도록, 상기 호출자 루틴을 컴파일링하는 단계를 더 포함하는
    방법.
  12. 제 7 항에 있어서,
    상기 컴파일링 단계는, 다수의 위치로부터의 복수의 파라미터를 조합하고, 상기 제 1 인터페이스를 통해 상기 복수의 파라미터를 전송하도록, 상기 호출자 루틴을 컴파일링하는 단계를 더 포함하는
    방법.
  13. 컴퓨터 프로그램 로직이 기록되어 있는 컴퓨터 판독가능한 매체에 있어서,
    상기 컴퓨터 프로그램 로직은 컴퓨터 시스템으로 하여금, 코드 모듈을 컴파일링하여 제 1 컴파일 모듈을 생성하게 하는 컴파일러 로직을 포함하고,
    상기 컴파일러 로직은,
    상기 컴퓨터 시스템으로 하여금, 제 1 코드 모듈에 존재하지 않는 명칭에 대해 호출하는 호출자 루틴을 식별하게 하는 로직과,
    상기 컴퓨터 시스템으로 하여금, 대체 명칭을 상기 명칭의 함수로서 생성하게 하고, 상기 대체 명칭의 위크 버전을 생성하게 하는 로직과,
    상기 컴퓨터 시스템으로 하여금, 제 1 인터페이스를 통해 하나 이상의 파라미터 세트를 전송하고 상기 대체 명칭에 대해 호출하도록, 상기 호출자 루틴을 컴파일링하게 하는 로직과,
    상기 컴퓨터 시스템으로 하여금, 상기 대체 명칭의 위크 버전을 이용하여 식별되는 엔트리 포인트를 구비하고 상기 제 1 인터페이스로부터 제 2 인터페이스를 통해 상기 파라미터 세트를 전송하고 상기 명칭에 대해 호출하도록 구성되는 스텁 루틴을 포함하도록, 상기 제 1 코드 모듈을 컴파일링하게 하는 로직을 포함하는
    컴퓨터 판독가능한 매체.
  14. 제 13 항에 있어서,
    상기 컴퓨터 시스템으로 하여금, 상기 제 1 컴파일 모듈을, 상기 명칭을 이용하여 식별되는 제 1 엔트리 포인트를 구비한 피호출자 루틴을 포함하는 제 2 컴파일 모듈과 링크시키게 하는 링크 로직을 더 포함하되,
    상기 링크 로직은,
    상기 컴퓨터 시스템으로 하여금, 상기 피호출자 루틴이 상기 대체 명칭을 가진 상기 피호출자 루틴의 대체 엔트리 포인트를 포함하는 경우에는 상기 대체 엔트리 포인트에 상기 호출자 루틴을 링크시키게 하고, 상기 피호출자 루틴이 상기 대체 엔트리 포인트를 포함하지 않은 경우에는 상기 호출자 루틴을 상기 스텁 루틴의 엔트리 포인트에 링크시키고 상기 스텁 루틴을 상기 피호출자 루틴의 상기 제 1 엔트리 포인트에 링크시키게 하는 로직을 포함하는
    컴퓨터 판독가능한 매체.
  15. 제 13 항에 있어서,
    상기 컴파일러 로직은,
    상기 컴퓨터 시스템으로 하여금, 제 2 코드 모듈 내의 피호출자 루틴을 식별하게 하는 로직과,
    상기 컴퓨터 시스템으로 하여금, 상기 피호출자 루틴의 명칭에 대한 함수로서 대체 엔트리 포인트 명칭을 생성하게 하는 로직과,
    상기 컴퓨터 시스템으로 하여금, 상기 피호출자 루틴의 명칭을 갖고 있으며 상기 제 2 인터페이스를 통해 상기 파라미터 세트를 수신하도록 구성되는 제 1 엔트리 포인트를 포함하고, 상기 대체 엔트리 포인트 명칭을 갖고 있으며 상기 제 1 인터페이스를 통해 상기 파라미터 세트를 수신하도록 구성되는 대체 엔트리 포인트를 포함하도록, 상기 식별된 피호출자 루틴을 컴파일링하게 하는 로직을 더 포함하는
    컴퓨터 판독가능한 매체.
  16. 제 13 항에 있어서,
    상기 제 1 인터페이스는 레지스터에 대응하고,
    상기 제 2 인터페이스는 호출 스택에 대응하는
    컴퓨터 판독가능한 매체.
  17. 제 13 항에 있어서,
    상기 컴파일러 로직은, 상기 컴퓨터 시스템으로 하여금, 상기 대체 명칭을, 상기 명칭, 상기 인터페이스의 표시자, 및 상기 파라미터 세트 내의 파라미터의 개수의 함수로서 생성하게 하는 로직을 더 포함하는
    컴퓨터 판독가능한 매체.
  18. 제 13 항에 있어서,
    상기 컴파일러 로직은, 상기 컴퓨터 시스템으로 하여금, 복수의 인터페이스 중 선택된 인터페이스를 통해 상기 파라미터 세트를 전송하도록, 상기 호출자 루틴을 컴파일링하게 하는 로직을 더 포함하는
    컴퓨터 판독가능한 매체.
  19. 제 18 항에 있어서,
    상기 컴파일러 로직은, 상기 컴퓨터 시스템으로 하여금, 상기 파라미터 세트에 속한 파라미터의 값에 근거하여, 상기 복수의 인터페이스 중 선택된 인터페이스를 통해 상기 파라미터 세트를 전송하도록, 상기 호출자 루틴을 컴파일링하게 하는 로직을 더 포함하는
    컴퓨터 판독가능한 매체.
  20. 제 13 항에 있어서,
    상기 컴파일러 로직은, 상기 컴퓨터 시스템으로 하여금, 다수의 위치로부터의 복수의 파라미터를 조합하고, 상기 제 1 인터페이스를 통해 상기 복수의 파라미터를 전송하도록, 상기 호출자 루틴을 컴파일링하게 하는 로직을 더 포함하는
    컴퓨터 판독가능한 매체.
KR1020110034452A 2010-04-13 2011-04-13 보이지 않는 인터페이스를 통해 비 αβι에 따른 특징을 구현하는 방법 및 시스템 KR101293389B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/759,487 2010-04-13
US12/759,487 US8464230B2 (en) 2010-04-13 2010-04-13 Methods and systems to implement non-ABI conforming features across unseen interfaces

Publications (2)

Publication Number Publication Date
KR20110114497A KR20110114497A (ko) 2011-10-19
KR101293389B1 true KR101293389B1 (ko) 2013-08-05

Family

ID=44284042

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110034452A KR101293389B1 (ko) 2010-04-13 2011-04-13 보이지 않는 인터페이스를 통해 비 αβι에 따른 특징을 구현하는 방법 및 시스템

Country Status (5)

Country Link
US (1) US8464230B2 (ko)
EP (1) EP2378413B1 (ko)
JP (1) JP5384551B2 (ko)
KR (1) KR101293389B1 (ko)
CN (1) CN102222017B (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8464230B2 (en) * 2010-04-13 2013-06-11 Intel Corporation Methods and systems to implement non-ABI conforming features across unseen interfaces
CN103853532B (zh) * 2012-11-29 2017-09-29 国际商业机器公司 用于函数调用的方法和装置
US10185547B2 (en) * 2015-06-26 2019-01-22 Intel Corporation Techniques for distributed operation of secure controllers
CN108304191B (zh) * 2016-09-30 2021-06-01 龙芯中科技术股份有限公司 函数动态调用方法和装置
US10241769B2 (en) 2016-12-14 2019-03-26 International Business Machines Corporation Marking sibling caller routines
US10152338B2 (en) 2016-12-14 2018-12-11 International Business Machines Corporation Marking external sibling caller routines
US10180827B2 (en) * 2016-12-14 2019-01-15 International Business Machines Corporation Suppressing storing of context information
US10095493B2 (en) * 2016-12-14 2018-10-09 International Business Machines Corporation Call sequence generation based on type of routine
US20180165073A1 (en) 2016-12-14 2018-06-14 International Business Machines Corporation Context information based on type of routine being called
US10235190B2 (en) 2016-12-14 2019-03-19 International Business Machines Corporation Executing instructions to store context information based on routine to be executed
CN112969999A (zh) * 2019-01-31 2021-06-15 宝马股份公司 用于在控制器上执行程序组件的方法、计算机可读存储介质、控制器和系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6199200B1 (en) 1994-04-15 2001-03-06 International Business Machines Corporation Method and system for supporting dual conventions for methods that return structures
US7350193B2 (en) 2004-09-30 2008-03-25 Motorola, Inc. Procedure invocation in an integrated computing environment having both compiled and interpreted code segments
KR20090095556A (ko) * 2006-10-02 2009-09-09 인터내셔널 비지네스 머신즈 코포레이션 프로그램 코드 변환과 관련된 링크된 함수 호출을 동적으로 처리하는 방법 및 장치
EP2378413A2 (en) * 2010-04-13 2011-10-19 Intel Corporation Methods and systems to implement non-ABI conforming features across unseen interfaces

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62262135A (ja) 1986-05-09 1987-11-14 Nec Corp 外部手続き結合手順リンク時決定方式
JPS6324422A (ja) 1986-07-17 1988-02-01 Nec Corp セグメント方式計算機における2種以上の呼出し手順の共存方式
JPH0322141A (ja) 1989-06-20 1991-01-30 Fujitsu Ltd 異なる言語間における呼出仲介方式
US7418734B2 (en) 2003-04-18 2008-08-26 Ounce Labs, Inc. Method and system for detecting privilege escalation vulnerabilities in source code
US7412710B2 (en) * 2004-11-12 2008-08-12 Red Hat, Inc. System, method, and medium for efficiently obtaining the addresses of thread-local variables
US20070157178A1 (en) * 2006-01-04 2007-07-05 International Business Machines Corporation Cross-module program restructuring
US20070169026A1 (en) 2005-11-28 2007-07-19 Davis Alan H Software program with alternative function libraries
US8032877B2 (en) * 2006-10-20 2011-10-04 International Business Machines Corporation Compiler neutral linking solution for C++ code
US8296745B2 (en) * 2007-12-31 2012-10-23 Oracle America, Inc. Method and apparatus for portable stub generation
US8291401B2 (en) * 2008-08-07 2012-10-16 International Business Machines Corporation Processing symbols associated with shared assemblies

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6199200B1 (en) 1994-04-15 2001-03-06 International Business Machines Corporation Method and system for supporting dual conventions for methods that return structures
US7350193B2 (en) 2004-09-30 2008-03-25 Motorola, Inc. Procedure invocation in an integrated computing environment having both compiled and interpreted code segments
KR20090095556A (ko) * 2006-10-02 2009-09-09 인터내셔널 비지네스 머신즈 코포레이션 프로그램 코드 변환과 관련된 링크된 함수 호출을 동적으로 처리하는 방법 및 장치
EP2378413A2 (en) * 2010-04-13 2011-10-19 Intel Corporation Methods and systems to implement non-ABI conforming features across unseen interfaces
EP2378413A3 (en) 2010-04-13 2011-12-07 Intel Corporation Methods and systems to implement non-ABI conforming features across unseen interfaces

Also Published As

Publication number Publication date
EP2378413A2 (en) 2011-10-19
JP2011222022A (ja) 2011-11-04
US20110252409A1 (en) 2011-10-13
JP5384551B2 (ja) 2014-01-08
EP2378413B1 (en) 2013-03-27
CN102222017B (zh) 2014-03-19
CN102222017A (zh) 2011-10-19
KR20110114497A (ko) 2011-10-19
US8464230B2 (en) 2013-06-11
EP2378413A3 (en) 2011-12-07

Similar Documents

Publication Publication Date Title
KR101293389B1 (ko) 보이지 않는 인터페이스를 통해 비 αβι에 따른 특징을 구현하는 방법 및 시스템
CN107943469B (zh) 一种智能合约的发布方法及装置
CN109523383B (zh) 一种智能合约转换系统及方法
US20180004495A1 (en) Verification of a dataflow representation of a program through static type-checking
CN102859489B (zh) 可恢复的方法
US20140109068A1 (en) Method for compiling an intermediate code of an application
EP3032413B1 (en) Code generation method, compiler, scheduling method, apparatus and scheduling system
CN109582438B (zh) 一种具有多个智能合约执行引擎的虚拟机及其实现方法
CN110471663B (zh) 一种代码编译方法、装置及电子设备
CN110865814B (zh) 一种支持异构计算核架构的编译器实现方法和系统
CN106843934A (zh) 升级文件的处理方法和装置
US10579366B2 (en) Data upgrade framework for distributed systems
JP5655448B2 (ja) Plcシステム、その開発支援装置
CN106550026B (zh) 一种网络通信装置及方法
CN103631585A (zh) 一种用于开发应用程序的方法及系统
CN101561884B (zh) 一种可变数据印刷过程中的脚本实现方法及装置
CN1129846C (zh) 程序执行方法
JP2010049439A (ja) ソフトウェアモデルを用いたシステム構築方法およびモデリング装置
CN111880803B (zh) 一种应用于多平台的软件构建方法及装置
EP4204960A1 (en) Thread-local return structure for asynchronous state machine
WO2022035476A1 (en) Representing asynchronous state machine in intermediate code
CN113918290A (zh) 一种api调用方法以及装置
CN112559079A (zh) 数据源连接驱动自适应加载方法、装置及电子设备
US6934892B2 (en) Computing system construction method under execution environment to be dependent on OS
CN104281443A (zh) 利用tcm实现代码、数据替换的方法

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee