KR20140031831A - 오버라이딩 가상 함수 호출에 대한 지원을 포함하는 isa 브릿징 - Google Patents

오버라이딩 가상 함수 호출에 대한 지원을 포함하는 isa 브릿징 Download PDF

Info

Publication number
KR20140031831A
KR20140031831A KR1020137005232A KR20137005232A KR20140031831A KR 20140031831 A KR20140031831 A KR 20140031831A KR 1020137005232 A KR1020137005232 A KR 1020137005232A KR 20137005232 A KR20137005232 A KR 20137005232A KR 20140031831 A KR20140031831 A KR 20140031831A
Authority
KR
South Korea
Prior art keywords
instruction set
set architecture
library
virtual function
application
Prior art date
Application number
KR1020137005232A
Other languages
English (en)
Other versions
KR101394780B1 (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 KR20140031831A publication Critical patent/KR20140031831A/ko
Application granted granted Critical
Publication of KR101394780B1 publication Critical patent/KR101394780B1/ko

Links

Images

Classifications

    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • 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
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines

Abstract

가상 함수에 대한 지원을 갖는 ISA 브릿징과 연관된 방법들, 장치들 및 저장 매체가 개시된다. 실시예들에서, 적어도 하나의 컴퓨터 판독가능 저장 매체는 실행에 응답하여, 타겟 ISA를 갖는 타겟 디바이스가, 타겟 디바이스 상에서 애플리케이션이 동작하게 서비스하면서 타겟 디바이스의 라이브러리의 라이브러리 서비스가 라이브러리의 가상 함수를 호출하는 데 편의를 제공하도록 타겟 디바이스에 ISA 브릿징 레이어를 제공하도록 구성된 명령들을 포함할 수 있으며, 여기에서 애플리케이션은 오버라이딩 구현체를 갖는다. ISA 브릿징 레이어는 실행을 위해 애플리케이션을 로딩하고, 애플리케이션의 로딩의 일부로서 가상 함수를 검출하고, 애플리케이션의 가상 함수 테이블을 수정하여 호출을 가능하게 하도록 구성된 로더를 포함할 수 있다. 다른 실시예들이 개시 또는 청구될 수 있다.

Description

오버라이딩 가상 함수 호출에 대한 지원을 포함하는 ISA 브릿징{ISA BRIDGING INCLUDING SUPPORT FOR CALL TO OVERIDDING VIRTUAL FUNCTIONS}
본 출원은 기술적으로 발명의 명칭이 "ISA Bridging with Callback"이고, 2012년 1월 10일자로 출원된 특허 협력 조약 출원번호 PCT/CN2012/070163호에 관한 것이다.
여기에서 제공되는 배경기술의 설명은 본 명세서의 문맥을 일반적으로 제시하기 위한 것이다. 여기에서 달리 나타내지 않으면, 본 섹션에 설명되는 재료들은 본 출원의 청구항들에 대해 선행 기술이 아니고, 본 섹션에 포함됨으로써 선행 기술이 되는 것으로 인정되지 않는다.
컴퓨팅 디바이스는 그 ISA(Instruction Set Architecture)에 의해 특징화될 수 있다. 통상적으로 컴퓨팅 디바이스는 OS(Operating System)를 포함할 수 있고, OS 서비스는 컴퓨팅 디바이스의 ISA를 위해 개발된 LIB(runtime library services)를 포함할 수 있어, 애플리케이션 개발자들이 컴퓨팅 디바이스 상에서 동작하는 애플리케이션을 개발하는 데 편의를 제공한다. 예를 들어, 다양한 스마트폰들이 ARM 프로세서 및 그 ISA의 사용에 의해 특징화될 수 있다. 이러한 스마트폰들은 각 스마트폰들에 대해 개발된 다양한 애플리케이션들을 지원하는, 예를 들어 iOS 또는 Android와 같은 OS를 포함할 수 있다. 몇몇 컴퓨팅 디바이스들은 JavaTM 또는 Android Application Framework와 같은 ISA-독립 실행 환경을 제공한다. 하지만, 다수의 애플리케이션들은 그럼에도 불구하고 ISA-종속 런타임 라이브러리들의 서비스들을 호출하는 ISA 종속 부분들을 포함한다. 또한, 이러한 ISA 종속 부분들은 ISA-종속 런타임 라이브러리들로부터의 콜백(callback)을 필요로 하는 콜백 함수들을 종종 포함하며, 이러한 콜백들은 바이너리 트랜슬레이션과 같은, 통상적인 접근이 되게 하는 런타임까지 종종 발견되지 않으며, 이는 필요사항을 다루는 데 있어 부적절하다. 추가적으로, 이러한 ISA 종속 부분들은, 가상 함수가 호출되었을 때 적절하게 호출될 필요가 있는 ISA-종속 런타임 라이브러리들의 상속가능 가상 함수들의 오버라이딩 구현체도 포함할 수 있다. 바이너리 트랜슬레이션과 같은 통상적인 접근은 필요사항을 다루는 데 있어 마찬가지로 부적절하다.
본 발명의 실시예들에 대해 한정적인 방식이 아니라 동일한 참조부호가 동일한 요소를 나타내는 첨부 도면에서 도시된 예시적인 실시예들의 방식으로 설명할 것이며, 여기에서:
도 1은 콜백 및 가상 함수 지원을 갖는 ISA 브릿징과 통합된 예시적인 컴퓨팅 디바이스를 도시한다;
도 2는 도 1의 ISA 브릿징 레이어를 보다 상세하게 도시한다;
도 3 및 도 4는 소스 ISA의 애플리케이션과 타겟 ISA의 라이브러리 서비스 사이의 브릿징 호출 및 콜백에 대한 방법을 도시한다; 그리고
도 5는 도 3 및 도 4의 방법의 전부 또는 선택된 양태들을 실시하도록 구성된 명령어들을 갖는 비일시적 컴퓨터 판독가능 저장 매체의 예를 도시하며; 이들 모두는 본 명세서의 실시예들에 따라 배치된다.
콜백 및 가상 함수 지원을 갖는 ISA 브릿징과 연관된 방법들, 장치들 및 저장 매체가 개시된다. 다양한 실시예들에서, 적어도 하나의 컴퓨터 판독가능 저장 매체는 명령어들의 실행에 응답하여, 애플리케이션을 서비스하는 동안 타겟 ISA를 갖는 타겟 디바이스를 활성화하여 타겟 디바이스에 ISA 브릿징 레이어를 제공하여 타겟 디바이스의 라이브러리의 라이브러리 서비스가 라이브러리의 가상 함수를 호출하는 데 있어 편의를 제공하도록 구성되는 명령어들을 포함할 수 있다. 라이브러리 서비스는 타겟 ISA에 대해 구현될 수 있고, 애플리케이션은 타겟 ISA와는 상이할 수 있는 소스 ISA에 대해 적어도 일부 구현될 수 있으며, 가상 함수의 오버라이딩 구현체를 갖는 클래스를 포함한다. ISA 브릿징 레이어는 실행을 위한 애플리케이션을 로딩하도록 구성된 로더를 포함할 수 있으며, 로딩의 일부로서, 가상 함수를 검출할 수 있고, 애플리케이션의 가상 함수 테이블을 수정하여, 호출에 응답하여, 가상 함수의 오버라이딩 구현체로 소스 및 타겟 명령어 세트 아키텍처들을 지나 전달되는 실행 제어를 활성화할 수 있다. 실시예들에서, ISA 브릿징 레이어는, ISA들을 지나, 라이브러리 서비스를 호출하는 애플리케이션과 콜백 함수를 콜백하는 라이브러리 서비스뿐만 아니라, 호출에 응답하여 실행 제어 전송을 활성화하기 위해 협력하도록 구성된 소스 ISA 에뮬레이터 및 라이브러리 에뮬레이터를 추가적으로 포함할 수 있다.
예시적인 실시예들의 다양한 양태들은 본 기술분야의 다른 당업자에게 그 연구의 본질을 전달하는 그 기술분야의 당업자에 의해 통상적으로 채용되는 용어들을 사용하여 설명할 것이다. 하지만, 대안적인 실시예들이 설명된 양태들의 일부만으로 실시될 수 있다는 것이 본 기술분야의 당업자에게 자명할 것이다. 예시적인 실시예들의 완전한 이해를 제공하기 위하여, 설명을 위해 특정 수, 재료 및 구성이 개진될 것이다. 하지만, 대안적인 실시예들이 특정의 상세사항 없이도 실시될 수 있다는 것이 본 기술분야의 당업자에게 자명할 것이다. 다른 예들에서, 예시적인 실시예들이 모호해지지 않도록 공지의 특징부가 생략되거나 간략화된다.
다양한 동작들이 예시적인 실시예들을 이해하는 데 가장 도움이 되는 방식으로 복수의 이산된 동작으로서 차례로 설명될 것이지만, 설명의 순서는, 이러한 동작들이 반드시 그 순서에 종속된 것을 암시하는 것으로 해석되어서는 안된다. 특히, 이러한 동작들은 표현의 순서대로 수행될 필요가 없다. 또한, 별개의 동작들로서의 동작들의 설명은, 그 동작들이 반드시 독립적으로 수행되고/되거나 별개의 엔티티에 의해 수행되는 것을 필요로 하는 것으로 해석되어서는 안된다. 별개의 모듈들로서의 엔티티들 및/또는 모듈들의 설명은 마찬가지로 모듈들이 별개이고/이거나 별개의 동작들을 수행하는 것을 필요로 하는 것으로 해석되어서는 안된다. 다양한 실시예들에서, 예시되고/되거나 설명되는 동작들, 엔티티들, 데이터 및/또는 모듈들은 병합되고, 추가적인 서브-파트들로 분할되고/되거나 생략될 수도 있다.
"일 실시예에서" 또는 "실시예에서"와 같은 문구들이 반복적으로 사용된다. 이러한 문구는 일반적으로 동일한 실시예를 지칭하지는 않으나, 그럴 수도 있다. "포함하는", "갖는" 및 "포괄하는"이라는 용어들은, 문맥이 달리 지시하지 않는 한 유사하다. "A/B"라는 문구는 "A 또는 B"를 의미한다. "A 및/또는 B"라는 문구는 "(A), (B) 또는 (A 및 B)"를 의미한다. "A, B 및 C 중 적어도 하나"라는 문구는 "(A), (B), (C), (A 및 B), (A 및 C), (B 및 C) 또는 (A, B 및 C)"를 의미한다.
도 1은 본 명세서의 다양한 실시예에 따른, 콜백 및 가상 함수 지원을 갖는 ISA 브릿징에 통합되는 예시적인 컴퓨팅 디바이스를 도시한다. 도시한 바와 같이, 도시된 실시예들에 있어서, 컴퓨팅 디바이스(102)는 도시된 바와 같이 서로 연결되는, OS(operating system)(122)를 갖도록 구성된 프로세서 및 메모리 배치(104), ISA 브릿징 레이어(123), 그 내부에서 동작되는 애플리케이션(120), GPU(graphics processing unit)(106), 표시 유닛(108) 및 네트워크 인터페이스(110)를 포함할 수 있다. OS(122)는 라이브러리 서비스(124)를 포함할 수 있다. 또한, 컴퓨팅 디바이스(102)는 애플리케이션(120)과 OS(122) 사이에 선택적인 미들웨어(121)를 포함할 수도 있다. 보다 상세히 후술하는 바와 같이, ISA 브릿징 레이어(123)는 다양한 애플리케이션 로드와 런타임 피쳐 또는 서비스(예를 들어 동적 바인딩을 포함하지만 이에 한정되지 않음)로 구성될 수 있어, 애플리케이션(120)을 활성화시켜 (예를 들어, ISA-독립 미들웨어(121)도 사용되는 경우) 전체 또는 일부로 소스 ISA에서 구현될 수 있으며, OS(122)(라이브러리 서비스(124) 포함)는 소스 ISA와는 상이한 타겟 ISA에서 구현될 수 있다. 또한, 애플리케이션(120)은 다양한 조건 하에서, 애플리케이션(120)의 다양한 콜백 함수들(125)을 콜백하기 위하여 라이브러리 서비스들(124) 중 다양한 것들을 필요로 하는 라이브러리 서비스(124)의 용법 특성을 포함하는 애플리케이션(특히, 소스 ISA를 사용하여 구현되는 부분)일 수 있다.
실시예들에서, 애플리케이션(120)은 객체 지향이거나 클래스(126)를 포함할 수 있다. 이러한 실시예들에 있어서, 애플리케이션(120)은 타겟 ISA 라이브러리 서비스(124)로부터 상속받은 가상 함수들의 하나 이상의 오버라이딩 구현체(127)를 갖는 객체/클래스(126)를 포함할 수 있다. 또한, 애플리케이션(120)은 타겟 ISA 라이브러리 서비스(124)로부터 상속받은 가상 함수들의 이러한 오버라이딩 구현체(127)(이하, 단순히 오버라이딩 구현체(127))를 저장하기 위한 하나 이상의 가상 함수 테이블(129)을 포함할 수 있다. 하나 이상의 가상 함수 테이블(129)은 오버라이딩 구현체(127)를 설명하는 연관된 메타데이터를 추가적으로 포함할 수 있다. 실시예들에서, 애플리케이션(120)은 컴파일 시간에 분석되지 않은 부분들의 런타임 분석에 있어서 편의를 제공하는 심볼 명칭 및 다른 정보를 포함하는 리로케이션 테이블(131)을 추가적으로 포함할 수 있다.
실시예들에서, ISA 브릿징 레이어(123)는, 라이브러리 서비스들(124) 중 다양한 것들이 가상 함수를 호출할 때 이러한 오버라이딩 구현체(127)로 상이한 ISA를 지나 실행 제어가 적절히 전송되기 위한 지원을 포함할 수 있다. ISA 브릿징 레이어(123)의 다양한 실시예들에 대해 보다 상세하게 후술할 것이다. ISA 브릿징 레이어(123)는 PVM(process virtual machine)이라 칭해질 수도 있다.
컴퓨팅 디바이스(102)는 서버, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트폰, 휴대 정보 단말기(personal digital assistant), 게임 콘솔, 인터넷 기기 또는 유사한 다른 컴퓨팅 디바이스일 수 있다. 예시적인 컴퓨팅 디바이스(102)는 Palo Alto의 Hewlett Packard사로부터 입수가능한 서버들, Texas, Austin의 Dell Computer사로부터 입수가능한 데스크톱 또는 랩톱 컴퓨터들, CA, Cupertino의 Apple Computer사로부터 입수가능한 스마트폰 및 컴퓨팅 태블릿, 일본 Tokyo의 Nintendo Corporation으로부터 입수가능한 게임 콘솔 등을 포함할 수 있지만 이에 제한되지는 않는다.
프로세서 및 메모리 배치(104)는 다양한 실행 속도 및 전원 소비의 단일 또는 멀티-코어 프로세서, 및 동적 랜덤 액세스, FLASH 등과 같은 다양한 유형의, 하나 이상의 캐시 레벨들을 갖는 다양한 아키텍처의 메모리를 갖는 배치를 포함하지만 이에 한정되지는 않는 광범위한 프로세서 및 메모리 배치를 나타내려 한 것이다. 다양한 실시예들에서, GPU(106)는 OS(122)에 비디오 디코딩 및/또는 그래픽 프로세싱 함수를 제공하도록 구성될 수 있으며, 표시 유닛(108)은 예를 들어 HD 비디오인 멀티-미디어 컨텐츠가 그 위에 렌더링되게 할 수 있도록 구성될 수 있다. 마찬가지로, GPU(106) 및 표시 유닛(108)은 본 기술 분야에 알려진 광범위한 그래픽 프로세서 및 표시 요소를 나타내려 한 것이다. 마찬가지로, 네트워크(들)(134)는 기술분야에 알려진 광범위한 네트워크를 나타내려 한 것이다. 예시적인 네트워크(들)(134)는 인터넷을 포함하여, 유선 또는 무선, 로컬 또는 광역, 사설 또는 공중 네트워크를 포함할 수 있다.
라이브러리 서비스(124)의 호출을 규정하는 API(application programming interface)를 제외하고, OS(122)(라이브러리 서비스(124) 포함)는 본 기술분야에 알려진 광범위한 운영 체제 요소를 나타내려 한 것이다. OS(122)는 메모리 자원, 스케줄 업무 실행 등을 관리하도록 구성된 커널과, 다양한 디바이스 자원을 관리하도록 구성된 디바이스 드라이버와 같은 통상적인 컴포넌트를 포함할 수 있다. 실시예들에서, OS(122)는 예를 들어, Android 애플리케이션 프레임워크를 지원하는 Android의 가상 머신인, (채용된다면) 미들웨어(121)를 지원하는 가상 머신을 포함할 수 있다. 실시예들에 있어서, 라이브러리 서비스(124)의 호출을 규정하는 것에 추가하여, 애플리케이션(120)의 콜백 함수(125)의 호출에 편의를 제공하기 위해서, 라이브러리 서비스(124)의 API는 애플리케이션(120)의 콜백 함수(125)의 대응하는 스터브(stub)들 및 서명들을 포함할 수도 있다. 예시적인 OS(122)는 WA, Redmond의 Microsoft Corporation으로부터 입수가능한 Windows® 운영 체제, 예컨대 NC, Raleigh의 Red Hat®로부터 입수가능한 Linux, Open Handset Alliance에 의해 개발된 AndroidTM 또는 CA, Cupertino의 Apple® Computer로부터 입수가능한 iOS를 포함할 수 있지만 이에 한정되지 않는다.
마찬가지로, 미들웨어(121)는 ISA-독립 미들웨어를 포함하지만 이에 한정되지 않는, 본 기술분야에 알려진 광범위한 미들웨어 요소를 나타내려 한 것이다. 예시적인 미들웨어(121)는, Android Application Framework, JavaTM, 또는 다른 애플리케이션 프레임워크 또는 ISA-독립 실행 환경을 포함할 수 있지만 이에 한정되지 않는다.
마찬가지로, 애플리케이션(120)(콜백 함수(125), 오버라이딩 구현체(127) 등을 포함)은 본 기술분야에 알려진 광범위한 애플리케이션을 나타내려 한 것이다. 예시적인 애플리케이션(120)은, 달력, 워드 프로세싱, 스프레드시트, 트위터, 페이스북 등과 같은 개인용 단말기, 프로덕티비티(productivity) 또는 소셜 네트워킹 애플리케이션 또는 브라우저와 같은 포괄적인 애플리케이션 에이전트를 포함할 수 있지만, 이에 한정되지 않는다. 예시적인 브라우저는, WA, Redmond의 Microsoft Corporation으로부터 입수가능한 Internet Explorer, 또는 CA, Mountain View의 Mozilla로부터 입수가능한 Firefox를 포함할 수 있지만 이에 한정되지 않는다.
이하, 도 2를 참조하며, 여기에서는 본 명세서의 다양한 실시예에 따라 예시적인 ISA 브릿징 레이어(123)가 도시된다. 도시된 바와 같이, 실시예들에 있어서, ISA 브릿징 레이어(123)는 다양한 런타임 특성과 동적 바인딩 서비스를 포함하지만 이에 한정되지는 않는 서비스를 제공하도록 구성된 ISA 브릿징 로더(202), 소스 ISA 에뮬레이터(204) 및 타겟 ISA 라이브러리 에뮬레이터(206)(이하, 단순히 LIB 에뮬레이터)를 포함할 수 있다. 소스 ISA 에뮬레이터(204)는 소스 ISA 컨텍스트(212) 및 바이너리 트랜슬레이션 엔진(215)을 포함할 수 있다. 소스 ISA 에뮬레이터(204)는 소스 ISA 컨텍스트(212) 내에 예컨대 현재 실행 명령 포인터(IP)를 포함하지만 이에 한정되지는 않는 소스 ISA 아키텍처의 실행 컨텍스트를 보유할 수 있다. 바이너리 트랜슬레이터 엔진(215)은 소스 ISA 명령을 타겟 ISA 명령으로 트랜슬레이팅하도록 구성될 수 있다. LIB 에뮬레이터(206)는 타겟 ISA 라이브러리(LIB) 컨텍스트(222), 게이트(224) 및 래퍼(wrapper) 함수(226)를 포함할 수 있다. LIB 에뮬레이터(206)는 타겟 ISA 라이브러리(LIB) 컨텍스트(222) 내에 타겟 ISA 라이브러리의 실행 컨텍스트를 보유할 수 있다. 다양한 실시예들에서, 소스 및 타겟 ISA 아키텍처를 통해, 애플리케이션(120)에 의해 라이브러리 서비스(124)의 호출에 대해 편의를 제공하기 위해 구성된, 라이브러리 서비스(124) 당 하나의 대응하는 쌍의 게이트(224) 및 래퍼 함수(226)가 존재할 수도 있다. 마찬가지로, 가상 함수가 호출될 때, 타겟 및 소스 ISA 아키텍처를 통해 라이브러리 서비스(124)에 의한 콜백 함수(125)의 콜백에 대한 편의를 제공하고, 타겟 및 소스 ISA 아키텍처를 통해 오버라이딩 구현체(127)에 실행 제어의 전송에 편의를 제공하도록 구성된, 콜백 함수(125) 당 그리고 오버라이딩 구현체(127) 당 하나의 대응하는 쌍의 게이트(224) 및 래퍼 함수(226)가 존재할 수도 있다.
ISA 브릿징 로더(202)는 애플리케이션(120)을 로딩하도록 구성될 수 있다. 애플리케이션(120)을 로딩할 때, ISA 브릿징 로더(202)는 라이브러리 서비스 호출과 연관된 임의의 분석되지 않은 애플리케이션(120)의 심볼 명칭을 라이브러리 서비스(124)의 적절한 것들로 분석하도록 구성될 수 있다. 실시예들에서, ISA 브릿징 로더(202)는 라이브러리 서비스 호출과 연관된 애플리케이션(120)의 임의의 분석되지 않은 심볼 명칭을 라이브러리 서비스(124)의 대응하는 게이트(224)의 어드레스로 분석하도록 구성될 수도 있다. 또한, ISA 브릿징 로더(202)는 심볼 명칭 또는 콜백 함수(125)에 대한 참조를 내부 명칭으로 수정하고, 심볼 명칭 또는 콜백 함수(125)에 대한 참조를 대응하는 래퍼 함수(226)에 연관시키도록 구성될 수 있다.
또한, ISA 브릿징 로더(202)는 실행을 위해 애플리케이션(120)을 로딩할 때, 다양한 오버라이딩 구현체(127)를 분석하도록 구성된 의사(pseudo) 링커 함수를 추가로 포함할 수 있다. 실시예들에서, ISA 브릿징 로더(202)는 로딩의 일부로서 리로케이션 테이블(131) 내의 정보를 이용하여 오버라이딩 구현체(127)를 식별할 수 있다. 실시예들에서, ISA 브릿징 로더(202)는, 적절하다면 라이브러리 서비스(124)가 가상 함수를 호출할 때, 가상 함수 테이블(129)을 수정하고, 가상 함수 테이블(129) 내의 엔트리들을 대응하는 래퍼 함수로 교체함으로써, ISA를 지나 오버라이딩 구현체(127)로 실행 제어가 전송될 수 있게 하도록 추가적으로 구성될 수 있다. 실시예들에서, 래퍼 함수는 오버라이딩 구현체(127)에 대한 포인터를 포함할 수 있다.
ISA 브릿징 로더(202)는 다수의 알려진 방식 중 임의의 하나에서 OS(122)(또는 채용된다면 미들웨어(121))의 로더로부터 로딩의 제어를 얻을 수 있다. 이러한 알려진 방식의 예들은 OS(122) 또는 미들웨어(121)에 의해 지원되는 경우 바이너리 포맷 기반 제어 전송 또는 로드/프리-로드(pre-load)의 이용을 포함할 수 있다. 다른 실시예들에서, OS(122)(또는 채용된다면 미들웨어(121))의 로더는 대신 ISA 브릿징 로더(202)로 제어 전송에 대한 편의를 제공하도록 수정될 수도 있다.
상술한 바와 같이, 소스 ISA 에뮬레이터(204)는 소스 ISA 실행 컨텍스트(212)를 보유하도록 구성될 수 있다. 소스 ISA 에뮬레이터(204)는 애플리케이션(120)의 실행 동안 소스 ISA IP(명령 포인터)를 추적하도록 구성될 수 있다. 애플리케이션(120)이 라이브러리 서비스(124)를 호출하기를 시도할 때, 소스 ISA 실행을 감시하는 소스 ISA 에뮬레이터(204)는 대신 LIB 에뮬레이터(206)로 실행 제어를 호출 및 전송할 수 있다. 다양한 실시예들에서, 소스 ISA 에뮬레이터(204)는 라이브러리 서비스(124)의 대응하는 게이트(224)로 실행 제어를 호출 및 전송할 수 있다.
LIB 에뮬레이터(206)는 마찬가지로 타겟 ISA 라이브러리(LIB) 실행 컨텍스트(222)를 보유하도록 구성될 수 있다.
라이브러리 서비스(124)에 대응하는 게이트(224)는 라이브러리 서비스(124)에 대한 호출을 대응하는 래퍼 함수(226)로 각각 리다이렉팅(redirect)하여 호출을 처리하고 설정하도록 구성될 수 있다. 콜백 함수(125) 또는 오버라이딩 구현체(127)에 대응하는 게이트(224)는 가상 함수에 대한 콜백 또는 호출에 대한 실행 제어를 대응하는 래퍼 함수(226)로부터 소스 ISA 에뮬레이터(204)로 각각 전송하도록 구성될 수 있다. 다양한 실시예들에서, 각 게이트(224)는 대응하는 래퍼 함수(226) 또는 소스 ISA 에뮬레이터(204)로의 리다이렉팅을 실시하도록 구성된 명령을 포함할 수 있다. 다양한 실시예들에서, 각 게이트(224)의 명령은 실행 제어 리디렉션을 실시하기 위해 바이너리 트랜슬레이션 엔진(215)과 협력하도록 구성된 소스 ISA 명령일 수 있다. 다양한 실시예들에서, 각 게이트(224)는 대응하는 래퍼 함수(226)를 식별하는 표시자를 추가적으로 포함할 수 있다.
다양한 실시예들에서, 대응하는 라이브러리 서비스(124) 호출을 처리 및 설정하기 위해, 라이브러리 서비스(124)에 대응하는 각 래퍼 함수(226)는 소스 ISA 컨텍스트(212)로부터 호출의 연관된 파라미터값을 검색하고, 소스 ISA 애플리케이션 바이너리 인터페이스(ABI) 포맷으로부터의 타겟 ISA ABI 포맷으로 호출을 변환하고, LIB 컨텍스트(222)에 파라미터 값을 갖는 변환된 호출을 저장하도록 구성될 수 있다.
콜백 함수(125)에 대한 콜백 시에 또는 오버라이딩된 가상 함수에 대한 호출 시에, 실행 제어는 콜백 함수(125) 또는 오버라이딩 구현체(127)의 대응하는 래퍼 함수(226)로 전송될 수 있다. 다양한 실시예들에서, 콜백 함수(125)에 대한 콜백을 처리 및 설정과, 애플리케이션(120)의 오버라이딩 구현체(127)로 실행 제어를 전송을 위해, 콜백 함수(125) 또는 오버라이딩 구현체(127)에 대응하는 각 래퍼 함수(226)는 타겟 ISA ABI 포맷으로부터 소스 ISA ABI 포맷으로 오버라이딩된 가상 함수에 대한 콜백 또는 호출을 변환하고, 오버라이딩된 가상 함수에 대한 콜백 또는 호출의 연관된 파라미터값을 첨부하고, 소스 ISA 컨텍스트(212)에 파라미터값을 갖는 오버라이딩된 가상 함수에 대한 변환된 콜백 또는 호출을 저장하도록 구성될 수 있다.
콜백 함수(125) 또는 오버라이딩 구현체(127)에 대응하는 게이트(224)는 콜백 함수(125) 또는 오버라이딩 구현체(127)에 대응하는 래퍼 함수(226)에 의해 준비되는 소스 ISA 컨텍스트를 갖는 소스 ISA 에뮬레이터(204)를 호출하여 타겟 ISA 상에 소스 ISA 포맷으로 제시되는 콜백 함수(125) 또는 오버라이딩 구현체(127)를 에뮬레이팅하도록 구성될 수 있다.
이하, 도 3 및 도 4를 참조하면, 본 명세서의 다양한 실시예들에 따라 콜백 및 가상 함수 지원을 갖는 예시적인 ISA 브릿징 방법이 도시된다. 도시된 바와 같이, 방법(300)은 2개의 파트를 포함하며, 파트(300a)는 (소스 ISA의) 애플리케이션(120)으로부터 (타겟 ISA의) 라이브러리 서비스(124)로 호출을 브릿징하기 위한 것이며, 파트(300b)는 (타겟 ISA의) 라이브러리 서비스(124)로부터 (소스 ISA의) 애플리케이션(120)의 콜백 함수로 콜백을 브릿징하거나 오버라이딩 구현체(127)로 실행 제어의 적절한 전송을 위한 것이다.
파트(300a)는 블록(302)에서 개시할 수 있다. 블록(302)에서, ISA 브릿징 로더(202)는 애플리케이션(120)을 로딩할 수 있다. 애플리케이션(120)을 로딩할 시에, ISA 브릿징 로더(202)는 애플리케이션(120)의 심볼 명칭 또는 참조를 라이브러리 서비스(124)로 분석하고, 콜백 함수(125)의 심볼 명칭 또는 참조를 수정할 수 있다. 또한, ISA 브릿징 로더(202)는 상술한 바와 같이, 리로케이션 테이블(131)을 이용하여 오버라이딩 구현체(127)를 검출/식별할 수 있고, 가상 함수 테이블(129)을 수정할 수 있다. 도 6에서 이 프로세스가 보다 상세하게 도시된다.
이하, 도 6을 참조하면, 도시된 바와 같이 프로세스(600)는 블록(602)에서 개시할 수 있다. 블록(602)에서, 로더(202)는 리로케이션 테이블(131)에서 현재 엔트리를 검색할 수 있다. 블록(602)으로부터, 프로세스(600)는 블록(604)으로 진행할 수 있다. 블록(604)에서, 로더(202)는, 검색된 엔트리 내의 픽스-업(fix-up) 어드레스가 가상 함수 테이블(129)에 속하는지 여부를 판정할 수 있다. 판정의 결과가 긍정적이면, 프로세스(600)는 블록(606)으로 진행할 수 있다. 블록(606)에서, 로더(202)는, 픽스-업 어드레스가 가상 함수와 연관되는지 여부를 추가적으로 판정할 수 있다. 판정의 결과가 긍정적이면, 프로세스(600)는 블록(608)으로 진행할 수 있다. 블록(608)에서, 로더(202)는, 가상 함수가 오버라이딩되었는지 여부를 추가적으로 판정할 수 있다. 판정의 결과가 다시 긍정적이면, 프로세스(600)는 블록(610)으로 진행할 수 있다. 블록(610)에서, 로더(202)는 가상 함수 테이블(129) 내의 엔트리를 오버라이딩 구현체(127)에 대한 포인터를 포함하는 대응하는 래퍼 함수로 교체할 수 있다.
블록(604, 606 또는 608)에서의 판정의 결과가 부정적이면, 프로세스(600)는 블록(612)으로 진행할 수 있다. 블록(612)에서, 로더(202)는, 리로케이션 테이블(131) 내의 다른 엔트리가 이용가능한지 여부를 판정할 수 있다. 판정의 결과가 긍정적이면, 프로세스(600)는 블록(614)으로 진행할 수 있다. 블록(614)에서, 로더(202)는 리로케이션 테이블(131) 내의 다음 엔트리로 이동할 수 있다. 블록(614)으로부터, 프로세스(600)는 블록(602)으로 진행할 수 있고 상술한 바와 같이 프로세스를 반복할 수 있다.
블록(612)에서의 판정 결과가 부정적이면, 프로세스(600)는 종료될 수 있다.
이하, 도 3을 다시 참조하면, 블록(302)으로부터, 파트(300a)는 블록(304)으로 진행할 수 있다. 블록(304)에서, 실행 도중에, 애플리케이션(120)은 라이브러리 서비스(124) 중 하나를 호출할 수 있다. 다양한 실시예들에서, 애플리케이션(120)은 라이브러리 서비스(124)에 의해 호출되는 그 콜백 함수(125) 중 하나에 대한 콜백을 필요로 할 수 있다. 실시예들에서, 애플리케이션(120)은 호출된 라이브러리 서비스(124)에 대한 호출의 일부로서 콜백되는 콜백 함수(125)에 대한 포인터를 포함할 수 있다. 콜백 함수(125)에 대한 포인터를 전달하는 대신, 라이브러리 서비스(124)의 래퍼 함수(226)는 콜백 함수(125)의 대응하는 래퍼 함수(226)를 전달할 수 있다.
일부 호출에 있어서, 상술한 바와 같이 수정된 오버라이딩 구현체(127) 및 가상 함수 테이블(129)을 갖는 객체/클래스(126)는 라이브러리 서비스(124)를 갖는 라이브러리로 전달될 수 있다.
블록(304)으로부터, 파트(300a)는 블록(306)으로 진행할 수 있다. 블록(306)에서 소스 ISA 에뮬레이터(204)는, 소스 ISA IP를 감시하고 IP가 타겟 라이브러리의 어드레스 범위 내의 어드레스를 참조하고 있다고 판정하는 것을 통해 호출의 검출시에, 호출을 리다이렉팅하고 LIB 에뮬레이터(206)의 라이브러리 서비스(124)의 대응하는 게이트(224)로 실행 제어를 전송할 수 있다. 블록(306)으로부터, 파트(300a)는 블록(308)으로 진행할 수 있다. 블록(308)에서, 게이트(224)는 추가적으로 호출을 리다이렉팅하고 실행 제어를 호출된 라이브러리 서비스(124)의 대응하는 래퍼 함수(226)로 전송할 수 있다. 블록(308)으로부터, 파트(300a)는 블록(310)으로 진행할 수 있다. 블록(310)에서, 상술한 바와 같이 호출된 라이브러리 서비스(124)의 래퍼 함수(226)는 호출을 처리하고, 호출된 라이브러리 서비스(124)에 의한 실행을 위해 LIB 컨텍스트(222) 내에 호출을 설정할 수 있다. 블록(310)으로부터, 파트(300a)는 블록(312)으로 진행할 수 있다. 블록(312)에서, 호출된 라이브러리 서비스(124)의 게이트(224)는 LIB 컨텍스트(222)로부터의 호출의 반환값(들)을 수집하고, 소스 ISA 컨텍스트(212)를 갱신하고, 실행 제어를 소스 ISA 에뮬레이터(202)로 전송하여 라이브러리 서비스의 반환값을 애플리케이션(125)에 반환할 수 있다.
이하, 도 4를 참조하면, 파트(300b)는 블록(404)에서 개시할 수 있다. 블록(404)에서, 호출된 라이브러리 서비스(124)의 도중 또는 완료시에, 라이브러리 서비스(124)는 예컨대 애플리케이션(120)에 의해 전달된 콜백 포인터를 호출함으로써 애플리케이션(120)의 콜백 함수(125)를 콜백하거나, 애플리케이션(120)의 구현체에 의해 오버라이딩된 라이브러리의 가상 함수를 호출할 수 있다. 블록(404)으로부터, 파트(300b)는 블록(406)으로 진행할 수 있으며, 여기에서 콜백/호출 포인터는 콜백 함수(125) 또는 오버라이딩 구현체(127)에 대응하는 래퍼 함수(226)이다. 블록(406)에서, 실행 제어는 수정된 참조에 따라 콜백 함수(125) 또는 오버라이딩 구현체(127)의 대응하는 래퍼 함수(226)로 전송될 수 있다. 블록(406)으로부터, 파트(300b)는 블록(408)으로 진행할 수 있다. 블록(408)에서, 래퍼 함수(226)는 상술한 바와 같이 콜백/호출을 처리할 수 있고, 애플리케이션(120)의 콜백 함수(125) 또는 오버라이딩 구현체(127)에 의한 실행을 위한 소스 ISA 컨텍스트(212)에 콜백/호출을 설정할 수 있으며, 그 후에 콜백 함수(125) 또는 오버라이딩 구현체(127)의 대응하는 게이트(224)로 실행 제어를 전송할 수 있다. 블록(408)으로부터, 파트(300b)는 블록(410)으로 진행할 수 있다. 블록(410)에서, 콜백 함수(125) 또는 오버라이딩 구현체(127)에 대응하는 게이트(224)는 콜백/호출을 리다이렉팅하고, 래퍼 함수(226)에 의해 준비된 소스 ISA 컨텍스트를 갖는 ISA 에뮬레이터로 실행 제어를 전송할 수 있다.
또한, 블록(412)에서, 예컨대 소스 ISA IP를 감시하고, IP가 콜백 함수(125) 또는 오버라이딩 구현체(127)에 대응하는 게이트(224)의 어드레스 범위 내의 어드레스를 참조하고 있는 것으로 판정하는 것을 통해 호출의 검출시에, 소스 ISA 에뮬레이터(204)는 소스 ISA IP를 콜백 함수(125) 또는 오버라이딩 구현체(127)로 리다이렉팅하여 에뮬레이션을 계속할 수 있다. 블록(412)으로부터, 파트(300b)는 블록(414)으로 진행할 수 있다. 블록(414)에서, 콜백 함수(125) 또는 오버라이딩 구현체(127)의 게이트(224)는 소스 ISA 컨텍스트(212)로부터 콜백 또는 호출의 반환값(들)을 수집하고, LIB 컨텍스트(222)를 갱신하고, 실행 제어를 LIB 에뮬레이터(206)로 전송하여 콜백 함수(125) 또는 오버라이딩 구현체(127)의 반환값을 라이브러리 서비스(124)로 반환할 수 있다.
도 5는 본 발명의 다양한 실시예에 따른 도 3 및 4의 방법의 모든 또는 선택된 양태를 실시하도록 구성된 명령을 가지는 예시적인 비일시적 컴퓨터 판독가능 저장 매체를 도시한다. 도시된 바와 같이, 비일시적 컴퓨터 판독가능 저장 매체(502)는 많은 프로그래밍 명령(504)을 포함할 수도 있다. 프로그래밍 명령(504)은, 예를 들면 컴퓨팅 디바이스(102)와 같은 컴퓨팅 디바이스가, 프로그래밍 명령의 실행에 응답하여, 도 3 및 4를 참조하여 전술한 방법(300)의 ISA 브릿징 동작의 모든 또는 선택된 양태를 수행할 수 있도록 구성될 수도 있다. 다른 실시예에서, 프로그래밍 명령(504)은 다수의 비일시적 컴퓨터 판독가능 저장 매체(502)에 배치될 수도 있다.
다시 도 1을 참조하면, 일 실시예에 대하여, 프로세서 및 메모리 배치(104)의 프로세서(들) 중 적어도 하나는 도 3 및 4의 방법(300)의 동작(또는 그 서브세트)을 실시하도록 구성된 ISA 브릿징 레이어(123)의 계산 로직(또는 그 서브세트)과 함께 패키징될 수도 있다. 일 실시예에 대하여, 프로세서 및 메모리 배치(104)의 프로세서(들) 중 적어도 하나는 SiP(System in Package)를 형성하기 위해 도 3 및 4의 방법(300)의 동작(또는 그 서브세트)을 실시하도록 구성된 ISA 브릿징 레이어(123)의 계산 로직(또는 그 서브세트)과 함께 패키징될 수도 있다. 일 실시예에 대하여, 프로세서 및 메모리 배치(104)의 프로세서(들) 중 적어도 하나는 도 3 및 4의 방법(300)의 동작(또는 그 서브세트)을 실시하도록 구성된 ISA 브릿징 레이어(123)의 계산 로직(또는 그 서브세트)과 동일한 다이 상에 집적될 수도 있다. 일 실시예에 대하여, 프로세서 및 메모리 배치(104)의 프로세서(들) 중 적어도 하나가 SoC(System on Chip)를 형성하기 위하여 도 3 및 4의 방법(300)의 동작(또는 그 서브세트)을 실시하도록 구성된 ISA 브릿징 레이어(123)의 계산 로직(또는 그 서브세트)과 동일한 다이에 집적될 수도 있다. 적어도 하나의 실시예에 대하여, SoC는 데스크톱 컴퓨터, 랩톱 컴퓨터, 스마트폰, 컴퓨팅 태블릿, 인터넷 기기, 휴대 정보 단말(PDA), 이동식 게임 장치, 서버 또는 기타 컴퓨팅 디바이스에 이용될 수도 있다.
계속해서 도 1을 참조하면, 이해의 편의를 위하여, 본 발명은 하나의 소스 ISA를 다른 타겟 ISA에 브릿징하는 하나의 ISA 브릿징 레이어(123)로 설명된다. 그러나, 본 발명은 이에 한정되지 않는다. 실시예에서, 다수의 상이한 ISA 브릿징 레이어(123)가 다수의 상이한 소스 ISA를 타겟 ISA에 브릿징하는 데 제공될 수도 있다. 이들 실시예 중 몇몇에서는, 요구되는 브릿징을 검출하기 위하여 디스패처(dispatcher)가 추가적으로 제공될 수도 있으며, 요구되는 ISA 브릿징을 제공하기 위해 적절한 ISA 브릿징 레이어 또는 레이어들(123)을 예시한다.
또한, 다양한 실시예에서, 본 발명은 필요한 브릿징의 양을 줄이기 위해 (소스 ISA 내의)애플리케이션(120)의 부분에 대해 (타겟 ISA 내의) 치환된 바이너리로 실시될 수도 있다. 다른 실시예에서, 브릿징에 이용된 자원 중 몇몇, 예를 들면 래퍼 함수 중 몇몇이 ISA 브릿징 레이어(123)에 액세스가능한 원격 서버에 배치될 수도 있다.
또한, 이해의 편의를 위해, ISA 브릿징 레이어(123)가 상이한 소스 ISA 및 타겟 ISA를 브릿징하도록 구성되는 것으로 설명되었다. 그러나, 본 발명은 이에 한정되지 않는다. 다양한 애플리케이션에 대하여, 동일한 소스 ISA 및 타겟 ISA를 브릿징하는 데에 ISA 브릿징 레이어(123)가 이용되는 것이 고려될 수 있다. 이러한 애플리케이션에서, 상술한 요소 중 하나 이상, 예를 들면 바이너리 트랜슬레이션 엔진(215)이 필요하지 않을 수도 있다. 이러한 애플리케이션의 예는 컴퓨팅 디바이스(102)에 개선된 동작상 보안을 제공할 수도 있다. 다른 애플리케이션 또한 그러한 브릿징에 마찬가지로 유용할 수도 있다.
이와 같이, 특정한 실시예가 도시되고 설명되었지만, 본 기술분야의 당업자는 광범위한 다른 및/또는 등가의 실시예가, 도시되고 설명된 특정한 실시예를 대체할 수 있음을 이해할 것이다.
따라서, 본 발명은, 애플리케이션이 경우에 따라 호출된 라이브러리 서비스에 대한 콜백(callback) 또는 애플리케이션에 의한 오버라이딩(overriding) 구현체에 의한 라이브러리의 가상 함수에 대한 호출을 요구하는 사용 특성을 갖는 다른 ISA에 대해 개발된 하나의 ISA 지원 애플리케이션을 갖는 컴퓨팅 디바이스의 기술적인 문제점에 대한 해결책이 될 수 있음을 이해할 것이다. 본 발명의 이점은 디바이스의 ISA를 컴퓨팅함에 있어 애플리케이션을 전체적으로 트랜슬레이션(translation)하거나 재구현(re-implement)할 필요를 회피하는 것을 포함할 수도 있으나, 이에 한정되지는 않는다.
본 발명이 컴퓨팅 디바이스에 대한 개선된 보안을 제공하는 기술적인 문제점에 대한 해결책이 될 수 있음 또한 이해할 것이다. 본 발명의 이점은 제공된 아이솔레이션(isolation)의 견실성(robustness)을 포함할 수도 있지만, 이에 한정되지는 않는다.
특히, 본 발명의 내용은, 명령의 실행에 응답하여, 타겟 명령 세트 아키텍처를 가지는 타겟 디바이스가, 타겟 디바이스 상에서 애플리케이션이 동작하게 서비스하면서, 타겟 디바이스에 명령 세트 아키텍처 브릿징 레이어를 제공하여 타겟 디바이스의 라이브러리의 라이브러리 서비스가 라이브러리의 가상 함수를 호출하는 데 편의를 제공하도록 명령 세트 아키텍처 브릿징 레이어를 제공하도록 구성된 명령을 포함하는 적어도 하나의 컴퓨터 판독가능 저장 매체를 포함하지만, 이에 한정되는 것은 아니다. 라이브러리 서비스는 타겟 명령 세트 아키텍처에 대하여 구현될 수도 있으며, 애플리케이션은 소스 명령 세트 아키텍처에 대하여 적어도 일부 구현될 수도 있으며, 가상 함수의 오버라이딩 구현체를 갖는 클래스를 포함한다. 또한, 명령 세트 아키텍처 브릿징 레이어는 실행을 위해 애플리케이션을 로딩하고, 애플리케이션의 로딩의 일부로서, 가상 함수의 오버라이딩 구현체를 검출하고, 호출에 응답하여, 소스 및 타겟 명령 세트 아키텍처를 통해 가상 함수의 오버라이딩 구현체로 실행 제어가 전송되는 것을 가능하게 하도록 클래스의 가상 함수 테이블을 수정하도록 구성된 로더를 포함할 수도 있다.
실시예에서, 로더는 가상 함수의 오버라이딩 구현체를 검출하기 위해 애플리케이션의 리로케이션 테이블을 횡단하도록 구성될 수도 있다. 실시예에서, 로더는 가상 함수의 오버라이딩 구현체를 가상 함수의 오버라이딩 구현체에 대한 포인터를 포함하는 가상 함수의 오버라이딩 구현체의 대응하는 래퍼 함수로 대체하기 위해 가상 함수 테이블을 수정하도록 구성될 수도 있다.
실시예에서, 명령 세트 아키텍처 브릿징 레이어는, 소스 및 타겟 명령 세트 아키텍쳐를 통해 라이브러리로 클래스를 전송하는 데 편의를 제공하는 것을 포함하여, 소스 및 타겟 명령 세트 아키텍처를 통해, 가상 함수의 오버라이딩 구현체로 실행 제어를 전송하는 데 편의를 제공하도록 협력하도록 구성된 소스 명령 세트 아키텍처 에뮬레이터 및 라이브러리 에뮬레이터를 더 포함할 수도 있다.
실시예에서, 소스 명령 세트 에뮬레이터는 소스 명령 세트 아키텍처의 실행 컨텍스트를 보유하도록 구성될 수도 있으며, 라이브러리 에뮬레이터는 라이브러리 실행 컨텍스트를 보유하도록 구성될 수도 있다. 또한, 라이브러리 에뮬레이터는 가상 함수의 오버라이딩 구현체의 대응하는 래퍼 함수로 호출을 리다이렉팅하도록 구성되어, 호출을 처리하여 소스 명령 세트 아키텍처의 실행 컨텍스트에 호출을 설정하고, 호출을 대응하는 게이트로 리다이렉팅할 수도 있다. 추가적으로, 라이브러리 에뮬레이터는 호출을 소스 ISA 명령 에뮬레이터로 리다이렉팅하도록 구성된 대응 게이트를 포함할 수도 있다. 또한, 소스 ISA 명령 에뮬레이터는 호출을 가상 함수의 오버라이딩 구현체로 리다이렉팅하도록 구성될 수도 있다. 소스 명령 세트 아키텍처 및 타겟 명령 세트 아키텍처는 동일한 명령 세트 아키텍처일 수도 있다.
또한, 가상 함수 지원으로 소스 명령 세트 아키텍처를 타겟 명령 세트 아키텍처로 브릿징하는 방법이 개시되었다. 방법은 컴퓨팅 디바이스에 의해 동작되는 명령 세트 아키텍처 브릿징 레이어의 로더에 의해 실행을 위해 애플리케이션의 로딩하는 것을 포함할 수도 있으며, 여기서 애플리케이션은 컴퓨팅 디바이스의 라이브러리의 가상 함수의 오버라이딩 구현체를 갖는 클래스를 적어도 포함하는 소스 명령 세트 아키텍처에 대하여 적어도 일부 구현되고, 컴퓨팅 디바이스는 타겟 명령 세트 아키텍처를 구현한다. 추가적으로, 방법은, 로딩의 일부로서, 로더에 의해 가상 함수의 오버라이딩 구현체를 검출하는 것과, 수정 후에 라이브러리로의 클래스의 전달 시에, 가상 함수를 호출하는 라이브러리의 라이브러리 서비스에 응답하여 실행 제어가 소스 및 타겟 명령 세트 아키텍처를 통해 가상 함수의 오버라이딩 구현체로 전송되는 것을 가능하게 하는, 로더에 의한 클래스의 가상 함수 테이블의 수정을 포함할 수도 있다.
실시예에서, 검출은 로더에 의해 가상 함수의 오버라이딩 구현체를 검출하기 위해 애플리케이션의 리로케이션 테이블을 횡단하는 것을 포함할 수도 있다. 수정은, 가상 함수의 오버라이딩 구현체를 포인터를 포함하는 대응 래퍼 함수로 교체하기 위해 가상 함수 테이블을 수정하는 것을 포함할 수도 있다.
실시예에서, 방법은, 명령 세트 아키텍처 브릿징 레이어의 소스 명령 세트 아키텍처 에뮬리에터에 의해 소스 ISA 아키텍처 실행 컨텍스트를 보유하는 것과, 명령 세트 아키텍처 브릿징 레이어의 라이브러리 에뮬레이터에 의해 라이브러리 실행 컨텍스트를 보유하는 것과, 클래스를 라이브러리로 전달할 시에 라이브러리의 라이브러리 서비스에 의한 가상 함수의 호출에 응답하여, 소스 및 타겟 명령 세트 아키텍처를 통해 실행 제어를 오버라이딩 구현체로 전송하는 데 편의를 제공하기 위한 명령 세트 아키텍처 에뮬레이터와 라이브러리 에뮬레이터 사이에서 협력하는 것을 더 포함할 수도 있다.
실시예에서, 방법은, 호출을 처리하여 소스 명령 세트 아키텍처의 실행 컨텍스트에 호출을 설정하기 위한, 라이브러리 에뮬레이터에 의해, 호출을 가상 함수의 오버라이딩 구현체에 대응하는 라이브러리 에뮬레이터의 래퍼 함수로 리다이렉팅하고, 가상 함수의 오버라이딩 구현체의 래퍼 함수에 대응하는 라이브러리 에뮬레이터의 게이트에 의해, 호출을 소스 ISA 명령 에뮬레이터로의 리다이렉팅, 및/또는 소스 ISA 명령 에뮬레이터에 의해, 호출을 가상 함수의 오버라이딩 구현체로 리다이렉팅하는 것을 더 포함할 수도 있다.
또한, 소스 명령 세트 아키텍처에 적어도 일부 구현된 애플리케이션을 실행하는 장치가 개시되었다. 장치는 타겟 명령 세트 아키텍처와, 실행을 위해 애플리케이션을 로딩하도록 구성된 로더를 포함하는 명령 세트 아키텍처 브릿징 레이어를 갖는 프로세서 및 메모리 배치를 포함할 수도 있으며, 애플리케이션은 소스 명령 세트 아키텍처에 대하여 적어도 일부 구현되며, 타겟 명령 세트 아키텍처에 대하여 구현되는 라이브러리의 가상 함수의 오버라이딩 구현체를 포함하는 클래스를 포함한다. 로더는 애플리케이션의 로딩의 일부로서, 가상 함수의 오버라이딩 구현체를 검출하고, 클래스를 라이브러리로 전달한 후에 라이브러리의 라이브러리 서비스에 의한 가상 함수의 호출에 응답하여, 실행 제어가 소스 및 타겟 명령 세트 아키텍처를 통해 가상 함수의 오버라이딩 구현체로 전송되는 것을 가능하게 하도록 클래스의 가상 함수 테이블을 수정하도록 구성된다.
실시예에서, 로더는 가상 함수의 오버라이딩 구현체를 검출하기 위해 애플리케이션의 리로케이션 테이블을 횡단하도록 구성될 수도 있다. 로더는 가상 함수의 오버라이딩 구현체를 가상 함수의 구현체에 대한 포인터를 포함하는 대응 래퍼 함수로 교체하기 위해 가상 함수 테이블을 수정하도록 구성될 수도 있다. 명령 세트 아키텍처 브릿징 레이어는, 클래스를 라이브러리로 전달한 후에 라이브러리 서비스에 의한 가상 함수의 호출에 응답하여, 소스 및 타켓 명령 세트 아키텍처를 통해 가상 함수의 오버라이딩 구현체로 실행 제어 전송을 실시하기 위해 협력하는 프로세서 및 메모리에 의해 동작되도록 구성된 명령 소스 아키텍처 에뮬레이터 및 라이브러리 에뮬레이터를 더 포함할 수도 있다.
실시예에서, 소스 명령 세트 에뮬레이터는 소스 명령 세트 아키텍처의 실행 컨텍스트를 보유하도록 구성될 수도 있으며, 라이브러리 에뮬레이터는 라이브러리 실행 컨텍스트를 보유하도록 구성될 수도 있다. 라이브러리 에뮬레이터는 호출을 처리하여, 소스 명령 세트 아키텍처의 실행 컨텍스트에 호출을 설정하고, 호출을 대응하는 게이트로 리다이렉팅하도록 구성된 가상 함수의 오버라이딩 구현체에 대응하는 래퍼 함수를 더 포함할 수도 있다. 라이브러리 에뮬레이터는 호출을 소스 ISA 명령 에뮬레이터로 리다이렉팅하도록 구성된 대응 게이트를 더 포함할 수도 있다. 또한, ISA 명령 에뮬레이터는 호출을 가상 함수의 오버라이딩 구현으로 리다이렉팅하도록 구성될 수도 있다.
실시예에서, 장치는 서버, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트폰, 휴대 정보 단말기, 게임 콘솔, 또는 인터넷 기기 중에서 선택된 하나일 수도 있다. 프로세서는 멀티-코어 프로세서일 수도 있다. 장치는 라이브러리 서비스를 포함하는 운영 체제를 포함할 수도 있다. 장치는 명령 세트 아키텍처 독립 애플리케이션 실행 환경을 더 포함할 수도 있으며, 애플리케이션은 명령 세트 아키텍처 독립 애플리케이션 실행 환경의 적어도 하나의 다른 서비스를 추가적으로 사용할 수 있다.

Claims (30)

  1. 명령들을 포함하는 적어도 하나의 컴퓨터 판독가능 저장 매체 - 상기 명령은, 타겟 명령 세트 아키텍처를 갖는 타겟 디바이스가 상기 명령의 실행에 응답하여 상기 타겟 디바이스 상에서 애플리케이션이 동작하게 서비스하면서, 상기 타겟 디바이스의 라이브러리의 라이브러리 서비스가 상기 라이브러리의 가상 함수를 호출하는 것이 가능하도록 상기 타겟 디바이스에 명령 세트 아키텍처 브릿징 레이어를 제공할 수 있도록 구성됨 - 로서,
    상기 라이브러리 서비스는 상기 타겟 명령 세트 아키텍처를 위해 구현되고, 상기 애플리케이션은 소스 명령 세트 아키텍처를 위해 적어도 부분적으로 구현되고 상기 가상 함수의 오버라이딩(overriding) 구현체를 갖는 클래스를 포함하고,
    상기 명령 세트 아키텍처 브릿징 레이어는, 실행을 위해 상기 애플리케이션을 로딩하고, 상기 애플리케이션의 로딩의 일부로서 상기 가상 함수의 오버라이딩 구현체를 검출하고 상기 호출에 응답하여 상기 클래스의 가상 함수 테이블을 수정하여 실행 제어가 상기 소스 명령 세트 아키텍처 및 상기 타겟 명령 세트 아키텍처를 통해 상기 가상 함수의 오버라이딩 구현체로 전송되는 것을 가능하게 하도록 구성된 로더(loader)를 포함하는
    적어도 하나의 컴퓨터 판독가능 저장 매체.

  2. 제 1 항에 있어서,
    상기 로더는 상기 가상 함수의 오버라이딩 구현체를 검출하기 위해 상기 애플리케이션의 리로케이션(relocation) 테이블을 횡단하도록 구성되는
    적어도 하나의 컴퓨터 판독가능 저장 매체.
  3. 제 1 항에 있어서,
    상기 로더는 상기 가상 함수의 오버라이딩 구현체를 상기 가상 함수의 오버라이딩 구현체에 대한 포인터(pointer)를 포함하는, 상기 가상 함수의 오버라이딩 구현체의 대응하는 래퍼 함수(wrapper function)로 교체하기 위해 상기 가상 함수 테이블을 수정하도록 구성되는
    적어도 하나의 컴퓨터 판독가능 저장 매체.
  4. 제 3 항에 있어서,
    상기 명령 세트 아키텍처 브릿징 레이어는, 상기 소스 명령 세트 아키텍처 및 상기 타겟 명령 세트 아키텍처를 통해 상기 가상 함수의 오버라이딩 구현체로 실행 제어를 전송 가능하게 하기 위해 - 상기 소스 명령 세트 아키텍처 및 상기 타겟 명령 세트 아키텍처를 통해 상기 라이브러리로 상기 클래스를 전송 가능하게 하는 것을 포함함 - 협력하도록 구성된 소스 명령 세트 아키텍처 에뮬레이터 및 라이브러리 에뮬레이터를 더 포함하는
    적어도 하나의 컴퓨터 판독가능 저장 매체.
  5. 제 4 항에 있어서,
    상기 소스 명령 세트 에뮬레이터는 상기 소스 명령 세트 아키텍처의 실행 컨텍스트(context)를 유지시키도록 구성되고, 상기 라이브러리 에뮬레이터는 라이브러리 실행 컨텍스트를 유지시키도록 구성되는
    적어도 하나의 컴퓨터 판독가능 저장 매체.
  6. 제 5 항에 있어서,
    상기 라이브러리 에뮬레이터는, 상기 호출을 상기 가상 함수의 오버라이딩 구현체의 대응하는 래퍼 함수로 리다이렉팅(redirect)하고, 상기 호출을 처리하여 상기 소스 명령 세트 아키텍처의 실행 컨텍스트에 상기 호출을 설정하고, 상기 호출을 대응하는 게이트로 리다이렉팅하도록 추가적으로 구성되는
    적어도 하나의 컴퓨터 판독가능 저장 매체.

  7. 제 6 항에 있어서,
    상기 라이브러리 에뮬레이터는 상기 호출을 소스 ISA 명령 에뮬레이터로 리다이렉팅하도록 구성된 대응 게이트를 더 포함하는
    적어도 하나의 컴퓨터 판독가능 저장 매체.
  8. 제 7 항에 있어서,
    상기 소스 ISA 명령 에뮬레이터는 상기 호출을 상기 가상 함수의 오버라이딩 구현체로 리다이렉팅하도록 추가적으로 구성되는
    적어도 하나의 컴퓨터 판독가능 저장 매체.
  9. 제 1 항 내지 제 8 항 중 어느 한 항에 있어서,
    상기 소스 명령 세트 아키텍처 및 상기 타겟 명령 세트 아키텍처는 동일한 명령 세트 아키텍처인
    적어도 하나의 컴퓨터 판독가능 저장 매체.
  10. 가상 함수 지원으로 소스 명령 세트 아키텍처를 타겟 명령 세트 아키텍처로 브릿징하기 위한 방법으로서,
    컴퓨팅 디바이스에 의해 동작되는 명령 세트 아키텍처 브릿징 레이어의 로더에 의해, 실행을 위한 애플리케이션을 로딩하는 단계 - 상기 애플리케이션은 상기 소스 명령 세트 아키텍처를 위해 적어도 부분적으로 구현되고 컴퓨팅 디바이스의 라이브러리의 가상 함수의 오버라이딩 구현체를 갖는 적어도 하나의 클래스를 포함하고, 상기 컴퓨팅 디바이스는 상기 타겟 명령 세트 아키텍처를 구현함 - 와,
    상기 로딩의 일부로서, 상기 로더에 의해 상기 가상 함수의 오버라이딩 구현체를 검출하고 상기 로더에 의해 상기 클래스의 가상 함수 테이블을 수정함으로써, 수정 후에 상기 클래스를 상기 라이브러리로 전달할 시에 상기 가상 함수를 호출하는 상기 라이브러리의 라이브러리 서비스에 응답하여 실행 제어가 상기 소스 명령 세트 아키텍처 및 상기 타겟 명령 세트 아키텍처를 통해 상기 가상 함수의 오버라이딩 구현체로 전송되도록 하는 단계를 포함하는
    브릿징 방법.
  11. 제 10 항에 있어서,
    상기 검출하는 것은, 상기 로더에 의해 상기 애플리케이션의 리로케이션 테이블을 횡단함으로써 상기 가상 함수의 오버라이딩 구현체를 검출하는 것을 포함하는
    브릿징 방법.
  12. 제 10 항에 있어서,
    상기 수정하는 것은, 상기 가상 함수의 오버라이딩 구현체를 상기 가상 함수의 오버라이딩 구현체에 대한 포인터를 포함하는 대응 래퍼 함수로 교체하기 위해 상기 가상 함수 테이블을 수정하는 것을 포함하는
    브릿징 방법.
  13. 제 12 항에 있어서,
    상기 명령 세트 아키텍처 브릿징 레이어의 소스 명령 세트 아키텍처 에뮬레이터에 의해, 소스 ISA 아키텍처 실행 컨텍스트를 유지시키는 단계와,
    상기 명령 세트 아키텍처 브릿징 레이어의 라이브러리 에뮬레이터에 의해, 라이브러리 실행 컨텍스트를 유지시키는 단계와,
    상기 클래스를 상기 라이브러리로 전달할 시에, 상기 라이브러리의 라이브러리 서비스에 의한 상기 가상 함수의 호출에 응답하여, 상기 소스 명령 세트 아키텍처 및 상기 타겟 명령 세트 아키텍처를 통해 상기 가상 함수의 오버라이딩 구현체로 실행 제어를 전송하는 것이 가능하도록 명령 세트 아키텍처 에뮬레이터와 라이브러리 에뮬레이터 사이에서 협력하는 단계를 포함하는
    브릿징 방법.
  14. 제 13 항에 있어서,
    상기 호출을 처리하여 상기 소스 명령 세트 아키텍처의 실행 컨텍스트에 상기 호출을 설정하기 위해, 상기 라이브러리 에뮬레이터에 의해, 상기 호출을 상기 가상 함수의 오버라이딩 구현체에 대응하는 라이브러리 에뮬레이터의 래퍼 함수로 리다이렉팅하는 단계를 더 포함하는
    브릿징 방법.
  15. 제 14 항에 있어서,
    상기 가상 함수의 오버라이딩 구현체의 래퍼 함수에 대응하는 라이브러리 에뮬레이터의 게이트에 의해, 상기 호출을 소스 ISA 명령 에뮬레이터로 리다이렉팅하는 단계를 더 포함하는
    브릿징 방법.
  16. 제 15 항에 있어서,
    상기 소스 ISA 명령 에뮬레이터에 의해 상기 호출을 상기 가상 함수의 오버라이딩 구현체로 리다이렉팅하는 단계를 더 포함하는
    브릿징 방법.
  17. 제 10 항 내지 제 16 항 중 어느 한 항에 있어서,
    상기 소스 명령 세트 아키텍처 및 상기 타겟 명령 세트 아키텍처는 동일한 명령 세트 아키텍처인
    브릿징 방법.
  18. 소스 명령 세트 아키텍처에서 적어도 부분적으로 구현된 애플리케이션을 실행하기 위한 장치로서,
    타겟 명령 세트 아키텍처를 포함하는 프로세서 및 메모리 구성과,
    상기 소스 명령 세트 아키텍처를 위해 적어도 부분적으로 구현된 실행 애플리케이션을 로딩하도록 구성된 로더를 포함하는 명령 세트 아키텍처 브릿징 레이어 - 상기 애플리케이션은, 상기 타겟 명령 세트 아키텍처를 위해 구현된 라이브러리의 가상함수의 오버라이딩 구현체를 갖는 클래스를 포함하고, 상기 로더는, 상기 애플리케이션의 로딩의 일부로서, 상기 가상 함수의 오버라이딩 구현체를 검출하고 상기 클래스의 가상 함수 테이블을 수정함으로써, 상기 클래스를 상기 라이브러리로 전달한 후에 라이브러리 서비스에 의한 상기 가상 함수의 호출에 응답하여 실행 제어가 상기 소스 명령 세트 아키텍처 및 상기 타겟 명령 세트 아키텍처를 통해 상기 가상 함수의 오버라이딩 구현체로 전송되는 것을 가능하게 하도록 구성됨 - 를 포함하는
    애플리케이션 실행 장치.
  19. 제 18 항에 있어서,
    상기 로더는 상기 가상 함수의 오버라이딩 구현체를 검출하기 위해 상기 애플리케이션의 리로케이션 테이블을 횡단하도록 구성되는
    애플리케이션 실행 장치.
  20. 제 18 항에 있어서,
    상기 로더는 상기 가상 함수의 오버라이딩 구현체를 상기 가상 함수의 오버라이딩 구현체에 대한 포인터를 포함하는 대응 래퍼 함수로 교체하기 위해 상기 가상 함수 테이블을 수정하도록 구성되는
    애플리케이션 실행 장치.
  21. 제 20 항에 있어서,
    상기 명령 세트 아키텍처 브릿징 레이어는, 상기 클래스를 상기 라이브러리로 전달한 후에 라이브러리 서비스에 의한 상기 가상 함수의 호출에 응답하여, 상기 소스 명령 세트 아키텍처 및 상기 타겟 명령 세트 아키텍처를 통해 상기 가상 함수의 오버라이딩 구현체로 실행 제어 전송을 실시하기 위해 협력하는 프로세서 및 메모리에 의해 동작되도록 구성되는 명령 소스 아키텍처 에뮬레이터 및 라이브러리 에뮬레이터를 더 포함하는
    애플리케이션 실행 장치.
  22. 제 21 항에 있어서,
    상기 소스 명령 세트 에뮬레이터는 상기 소스 명령 세트 아키텍처의 실행 컨텍스트를 유지시키도록 구성되고, 상기 라이브러리 에뮬레이터는 라이브러리 실행 컨텍스트를 유지시키도록 구성되는
    애플리케이션 실행 장치.
  23. 제 22 항에 있어서,
    상기 라이브러리 에뮬레이터는, 상기 호출을 처리하고, 상기 소스 명령 세트 아키텍처의 실행 컨텍스트에 상기 호출을 설정하며, 상기 호출을 대응하는 게이트로 리다이렉팅하도록 구성되는 상기 가상 함수의 오버라이딩 구현체에 대응하는 래퍼 함수를 더 포함하는
    애플리케이션 실행 장치.
  24. 제 23 항에 있어서,
    상기 라이브러리 에뮬레이터는 상기 호출을 소스 ISA 명령 에뮬레이터로 리다이렉팅하도록 구성된 대응 게이트를 더 포함하는
    애플리케이션 실행 장치.
  25. 제 24 항에 있어서,
    상기 ISA 명령 에뮬레이터는 상기 호출을 상기 가상 함수의 오버라이딩 구현체로 리다이렉팅하도록 추가적으로 구성되는
    애플리케이션 실행 장치.
  26. 제 18 항 내지 제 25 항 중 어느 한 항에 있어서,
    상기 소스 명령 세트 아키텍처 및 상기 타겟 명령 세트 아키텍처는 동일한 명령 세트 아키텍처인
    애플리케이션 실행 장치.
  27. 제 26 항에 있어서,
    상기 애플리케이션 실행 장치는, 서버, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트폰, 휴대 정보 단말기, 게임 콘솔 또는 인터넷 기기 중 선택된 하나인
    애플리케이션 실행 장치.
  28. 제 26 항에 있어서,
    상기 프로세서는 멀티-코어 프로세서인
    애플리케이션 실행 장치.
  29. 제 26 항에 있어서,
    라이브러리 서비스를 포함하는 운영 체제를 더 포함하는
    애플리케이션 실행 장치.
  30. 제 26 항에 있어서,
    명령 세트 아키텍처 독립 애플리케이션 실행 환경을 더 포함하고,
    상기 애플리케이션은 명령 세트 아키텍처 독립 애플리케이션 실행 환경의 적어도 하나의 다른 서비스를 추가적으로 사용하는
    애플리케이션 실행 장치.
KR1020137005232A 2012-08-08 2012-08-08 오버라이딩 가상 함수 호출에 대한 지원을 포함하는 isa 브릿징 KR101394780B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2012/079798 WO2014022980A1 (en) 2012-08-08 2012-08-08 Isa bridging including support for call to overidding virtual functions

Publications (2)

Publication Number Publication Date
KR20140031831A true KR20140031831A (ko) 2014-03-13
KR101394780B1 KR101394780B1 (ko) 2014-05-15

Family

ID=49696204

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137005232A KR101394780B1 (ko) 2012-08-08 2012-08-08 오버라이딩 가상 함수 호출에 대한 지원을 포함하는 isa 브릿징

Country Status (6)

Country Link
US (1) US8768682B2 (ko)
EP (1) EP2883133A4 (ko)
JP (1) JP5976930B2 (ko)
KR (1) KR101394780B1 (ko)
CN (1) CN103443763B (ko)
WO (1) WO2014022980A1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9262156B2 (en) * 2014-02-12 2016-02-16 International Business Machines Corporation Methods for transparent management of context and state in an asynchronous callback flow
US10120663B2 (en) 2014-03-28 2018-11-06 Intel Corporation Inter-architecture compatability module to allow code module of one architecture to use library module of another architecture
US20150379169A1 (en) * 2014-06-27 2015-12-31 Yong Wu Efficient emulation for pseudo-wrapped callback handling in binary translation software
US9792098B2 (en) 2015-03-25 2017-10-17 International Business Machines Corporation Unaligned instruction relocation
US10452409B2 (en) * 2015-10-23 2019-10-22 Oracle International Corporation Universal adapter for native calling
CN106844181B (zh) * 2017-02-07 2021-02-23 网易(杭州)网络有限公司 用于记录用户行为的方法、系统及移动终端
US10536474B2 (en) * 2017-09-07 2020-01-14 Cmd Watch Security Inc. Command interception
CN108628689B (zh) * 2018-04-28 2021-09-07 武汉斗鱼网络科技有限公司 一种对话框数据传输方法、装置、计算机及存储介质
CN110457151B (zh) * 2019-07-10 2022-01-28 五八有限公司 热修复方法、装置及可读存储介质
CN113076151B (zh) * 2021-04-21 2023-10-10 光禹莱特数字科技(上海)有限公司 应用程序交互方法、装置、计算机设备及存储介质

Family Cites Families (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59501684A (ja) * 1982-10-22 1984-10-04 インタ−ナシヨナル・ビジネス・マシ−ンズ・コ−ポレ−シヨン 目的命令ストリ−ムへ殆んど実時間で插入するためのソ−スおよび目的命令ストリ−ムの外部における加速式命令写像
US5297284A (en) * 1991-04-09 1994-03-22 Microsoft Corporation Method and system for implementing virtual functions and virtual base classes and setting a this pointer for an object-oriented programming language
US5805885A (en) * 1992-12-24 1998-09-08 Microsoft Corporation Method and system for aggregating objects
US5560013A (en) * 1994-12-06 1996-09-24 International Business Machines Corporation Method of using a target processor to execute programs of a source architecture that uses multiple address spaces
US5748964A (en) * 1994-12-20 1998-05-05 Sun Microsystems, Inc. Bytecode program interpreter apparatus and method with pre-verification of data type restrictions
US6535903B2 (en) * 1996-01-29 2003-03-18 Compaq Information Technologies Group, L.P. Method and apparatus for maintaining translated routine stack in a binary translation environment
CA2171898C (en) * 1996-03-15 2000-02-01 Brian Ward Thomson Linker optimization for compiled object oriented programs
US6157955A (en) * 1998-06-15 2000-12-05 Intel Corporation Packet processing system including a policy engine having a classification unit
US7516453B1 (en) * 1998-10-26 2009-04-07 Vmware, Inc. Binary translator with precise exception synchronization mechanism
US7941647B2 (en) * 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US6549959B1 (en) * 1999-08-30 2003-04-15 Ati International Srl Detecting modification to computer memory by a DMA device
US6675377B1 (en) * 1999-09-13 2004-01-06 Matsushita Electric Industrial Co., Ltd. Program conversion apparatus
US6986128B2 (en) * 2000-01-07 2006-01-10 Sony Computer Entertainment Inc. Multiple stage program recompiler and method
US6907519B2 (en) * 2001-11-29 2005-06-14 Hewlett-Packard Development Company, L.P. Systems and methods for integrating emulated and native code
US7103878B2 (en) * 2001-12-13 2006-09-05 Hewlett-Packard Development Company, L.P. Method and system to instrument virtual function calls
GB0215033D0 (en) 2002-06-28 2002-08-07 Critical Blue Ltd Instruction set translation method
US7603662B2 (en) * 2002-10-09 2009-10-13 Microsoft Corporation System and method for sensing types of local variables
US7353501B2 (en) * 2002-11-18 2008-04-01 Microsoft Corporation Generic wrapper scheme
US20040117532A1 (en) * 2002-12-11 2004-06-17 Bennett Steven M. Mechanism for controlling external interrupts in a virtual machine system
US20050015754A1 (en) * 2003-06-18 2005-01-20 Virtutech Ab Method and system for multimode simulator generation from an instruction set architecture specification
GB0316531D0 (en) * 2003-07-15 2003-08-20 Transitive Ltd Method and apparatus for performing native binding
JP2005141380A (ja) * 2003-11-05 2005-06-02 Matsushita Electric Ind Co Ltd テンプレートコンパイル方法
JP2006146613A (ja) * 2004-11-19 2006-06-08 Matsushita Electric Ind Co Ltd プログラム変換方法
JP4768984B2 (ja) * 2004-12-06 2011-09-07 パナソニック株式会社 コンパイル方法、コンパイルプログラムおよびコンパイル装置
WO2006069485A1 (en) * 2004-12-30 2006-07-06 Intel Corporation Selecting formats for multi-format instructions in binary translation of code from a hybrid source instruction set architecture to a unitary target instruction set architecture
US7634768B2 (en) * 2005-02-17 2009-12-15 Intel Corporation Methods and apparatus to support mixed-mode execution within a single instruction set architecture process of a virtual machine
US20070006178A1 (en) * 2005-05-12 2007-01-04 Microsoft Corporation Function-level just-in-time translation engine with multiple pass optimization
US7293170B2 (en) * 2005-06-06 2007-11-06 Tranxition Corporation Changing the personality of a device by intercepting requests for personality information
US8082430B2 (en) * 2005-08-09 2011-12-20 Intel Corporation Representing a plurality of instructions with a fewer number of micro-operations
US7757221B2 (en) * 2005-09-30 2010-07-13 Intel Corporation Apparatus and method for dynamic binary translator to support precise exceptions with minimal optimization constraints
US8099724B2 (en) * 2006-02-28 2012-01-17 Oracle America, Inc. Fast patch-based method calls
US8352925B2 (en) * 2007-01-16 2013-01-08 Oracle America, Inc. Mechanism for enabling a set of code intended for a first platform to be executed on a second platform
US8321849B2 (en) * 2007-01-26 2012-11-27 Nvidia Corporation Virtual architecture and instruction set for parallel thread computing
US7992130B2 (en) * 2007-05-07 2011-08-02 Microsoft Corporation Class-based object-oriented features in class-less script language
US7941641B1 (en) * 2007-10-01 2011-05-10 Yong-Kyu Jung Retargetable instruction decoder for a computer processor
US8156479B2 (en) 2007-12-07 2012-04-10 International Business Machines Corporation System and method of monitoring dynamic scopes in synchronous and asynchronous calls
US8146106B2 (en) * 2007-12-31 2012-03-27 Intel Corporation On-demand emulation via user-level exception handling
US8099541B2 (en) * 2008-01-22 2012-01-17 Globalfoundries Inc. Minivisor entry point in virtual machine monitor address space
US9152442B2 (en) * 2008-08-29 2015-10-06 Red Hat, Inc. Callbacks in virtual machines
US8266604B2 (en) * 2009-01-26 2012-09-11 Microsoft Corporation Transactional memory compatibility management
US8255674B2 (en) * 2009-01-28 2012-08-28 International Business Machines Corporation Implied storage operation decode using redundant target address detection
US8775153B2 (en) * 2009-12-23 2014-07-08 Intel Corporation Transitioning from source instruction set architecture (ISA) code to translated code in a partial emulation environment
US9038018B2 (en) * 2010-10-08 2015-05-19 Microsoft Technology Licensing, Llc Integrating software components
US9934166B2 (en) * 2010-12-10 2018-04-03 Daniel Shawcross Wilkerson Hard object: constraining control flow and providing lightweight kernel crossings
US20120151184A1 (en) * 2010-12-10 2012-06-14 Daniel Shawcross Wilkerson Hard object: constraining control flow and providing lightweight kernel crossings
US8683478B2 (en) * 2010-12-21 2014-03-25 International Business Machines Corporation Best fit mapping of self-virtualizing input/output device virtual functions for mobile logical partitions
EP2482184A1 (en) * 2011-02-01 2012-08-01 Irdeto B.V. Adaptive obfuscated virtual machine
US20120254593A1 (en) * 2011-04-01 2012-10-04 Jesus Corbal San Adrian Systems, apparatuses, and methods for jumps using a mask register
US8799693B2 (en) * 2011-09-20 2014-08-05 Qualcomm Incorporated Dynamic power optimization for computing devices
US9063760B2 (en) * 2011-10-13 2015-06-23 International Business Machines Corporation Employing native routines instead of emulated routines in an application being emulated
JP5953867B2 (ja) * 2012-03-26 2016-07-20 富士ゼロックス株式会社 プログラム、及びプログラム保護装置

Also Published As

Publication number Publication date
KR101394780B1 (ko) 2014-05-15
WO2014022980A1 (en) 2014-02-13
US8768682B2 (en) 2014-07-01
EP2883133A4 (en) 2016-03-23
JP2015525922A (ja) 2015-09-07
JP5976930B2 (ja) 2016-08-24
US20140046649A1 (en) 2014-02-13
EP2883133A1 (en) 2015-06-17
CN103443763B (zh) 2016-10-05
CN103443763A (zh) 2013-12-11

Similar Documents

Publication Publication Date Title
KR101394780B1 (ko) 오버라이딩 가상 함수 호출에 대한 지원을 포함하는 isa 브릿징
US10761867B2 (en) Nested emulation and dynamic linking environment
CN107077337B (zh) 用于执行根据两个指令集架构编译的应用编码的系统和方法
KR101691063B1 (ko) 콜백을 이용하는 isa 브리징
US10191774B2 (en) Hardware acceleration of web applications
US11301562B2 (en) Function execution based on data locality and securing integration flows
US20220405385A1 (en) Secure container construction device and method executable by android application, and computer-readable recording medium on which program thereof is recorded
US20130204924A1 (en) Methods and apparatuses for providing application level device transparency via device devirtualization
JP5886450B2 (ja) ハイブリッドのエミュレーション及びカーネル関数処理のシステム及び方法
US9632853B2 (en) Virtualizing integrated calls to provide access to resources in a virtual namespace
CN111078412B (zh) 一种通过api截获对gpu进行资源管理的方法
JP6352486B2 (ja) コールバックによるisaブリッジング
Heidari Android Elastic Service Execution and Evaluation

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170504

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180427

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee