RU2015107557A - Генерация собственного кода из кода на промежуточном языке для приложения - Google Patents

Генерация собственного кода из кода на промежуточном языке для приложения Download PDF

Info

Publication number
RU2015107557A
RU2015107557A RU2015107557A RU2015107557A RU2015107557A RU 2015107557 A RU2015107557 A RU 2015107557A RU 2015107557 A RU2015107557 A RU 2015107557A RU 2015107557 A RU2015107557 A RU 2015107557A RU 2015107557 A RU2015107557 A RU 2015107557A
Authority
RU
Russia
Prior art keywords
computing device
application
code
mdil
libraries
Prior art date
Application number
RU2015107557A
Other languages
English (en)
Other versions
RU2643484C2 (ru
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 RU2015107557A publication Critical patent/RU2015107557A/ru
Application granted granted Critical
Publication of RU2643484C2 publication Critical patent/RU2643484C2/ru

Links

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/445Program loading or initiating
    • 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/41Compilation
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Abstract

1. Способ, содержащий:прием, в вычислительном устройстве, машинно-зависимого кода на промежуточном языке (MDIL кода), генерируемого онлайн-провайдером для приложения;в вычислительном устройстве, установку приложения на вычислительном устройстве путем генерации собственного образа для приложения путем связывания MDIL кода, причем генерация собственного образа содержит:связывание части MDIL кода с одной или более библиотеками на вычислительном устройстве; исохранение собственного образа на вычислительном устройстве для использования при загрузке приложения для исполнения.2. Способ по п. 1, дополнительно содержащий обновление вычислительного устройства, причем обновление вычислительного устройства содержит:обновление набора библиотек на вычислительном устройстве, причем набор библиотек включает в себя по меньшей мере одну библиотеку из одной или более библиотек, связанных с частью MDIL кода;обновление по меньшей мере одного механизма среды выполнения вычислительного устройства;после обновления набора библиотек, автоматическую генерацию обновленного собственного образа для приложения путем связывания части MDIL кода с упомянутой по меньшей мере одной библиотекой из упомянутой одной или более библиотек после того, как упомянутая одна или более библиотек обновлены на вычислительном устройстве, причем обновленный собственный образ для приложения генерируется таким образом, что обновленный собственный образ является исполняемым с использованием обновленного по меньшей мере одного механизма среды выполнения; исохранение обновленного собственного образа на вычислительном устройстве для использования при загрузке

Claims (10)

1. Способ, содержащий:
прием, в вычислительном устройстве, машинно-зависимого кода на промежуточном языке (MDIL кода), генерируемого онлайн-провайдером для приложения;
в вычислительном устройстве, установку приложения на вычислительном устройстве путем генерации собственного образа для приложения путем связывания MDIL кода, причем генерация собственного образа содержит:
связывание части MDIL кода с одной или более библиотеками на вычислительном устройстве; и
сохранение собственного образа на вычислительном устройстве для использования при загрузке приложения для исполнения.
2. Способ по п. 1, дополнительно содержащий обновление вычислительного устройства, причем обновление вычислительного устройства содержит:
обновление набора библиотек на вычислительном устройстве, причем набор библиотек включает в себя по меньшей мере одну библиотеку из одной или более библиотек, связанных с частью MDIL кода;
обновление по меньшей мере одного механизма среды выполнения вычислительного устройства;
после обновления набора библиотек, автоматическую генерацию обновленного собственного образа для приложения путем связывания части MDIL кода с упомянутой по меньшей мере одной библиотекой из упомянутой одной или более библиотек после того, как упомянутая одна или более библиотек обновлены на вычислительном устройстве, причем обновленный собственный образ для приложения генерируется таким образом, что обновленный собственный образ является исполняемым с использованием обновленного по меньшей мере одного механизма среды выполнения; и
сохранение обновленного собственного образа на вычислительном устройстве для использования при загрузке приложения для исполнения.
3. Способ по п. 1, дополнительно содержащий загрузку собственного образа во время исполнения приложения, при этом загрузка собственного образа выполняется посредством среды выполнения общего языка.
4. Способ по п. 1, в котором MDIL код содержит одну или более инструкций машинного кода и одну или более псевдо инструкций, кодированных на двоичном уровне, и в котором инструкции машинного кода основаны на наборе инструкций процессора для процессора вычислительного устройства.
5. Способ по п. 4, в котором связывание MDIL кода с упомянутой одной или более библиотеками содержит:
генерацию исполняемого кода по меньшей мере путем генерации инструкции на собственном языке из псевдо инструкции псевдо инструкций в MDIL коде.
6. Способ по п. 5, в котором генерация инструкции на собственном языке содержит генерацию численного смещения поля на основе псевдо инструкции.
7. Способ по п. 6, в котором псевдо инструкция содержит маркер, который идентифицирует поле, и собственная инструкция включает в себя численное смещение поля для ссылки на поле, когда исполняется.
8. Способ по п. 1, дополнительно содержащий:
прием нового MDIL кода для приложения;
обновление приложения на вычислительном устройстве путем генерации обновленного собственного образа для приложения, включающее в себя связывание новой части MDIL кода с упомянутой одной или более библиотеками на вычислительном устройстве; и
сохранение обновленного собственного образа на вычислительном устройстве для использования при загрузке приложения для исполнения.
9. Вычислительное устройство, которое включает в себя процессор и память, причем память хранит исполняемые компьютером инструкции, чтобы побуждать вычислительное устройство выполнять способ, причем способ содержит:
прием, в вычислительном устройстве, по меньшей мере одного установочного пакета для приложения от онлайн-провайдера, причем по меньшей мере один установочный пакет содержит набор машинно-зависимых файлов на промежуточном языке (MDIL файлов);
предоставление компоновщику вычислительного устройства по меньшей мере одного MDIL файла из набора MDIL файлов и одной или более библиотек, подлежащих связыванию с упомянутым по меньшей мере одним MDIL файлом; и
генерацию, посредством компоновщика, собственного образа для приложения, причем генерация содержит связывание машинно-зависимого кода на промежуточном языке (MDIL кода) упомянутого по меньшей мере одного MDIL файла с использованием упомянутой одной или более библиотек.
10. Способ, содержащий:
генерацию набора машинно-зависимых файлов на промежуточном языке (MDIL файлов) для приложения путем компиляции предварительного кода приложения в машинно-зависимый код на промежуточном языке (MDIL код);
подписание соответствующих файлов из набора MDIL файлов, чтобы указывать, что соответствующие файлы являются доверенными как происходящие из онлайн-рынка;
генерацию списка связывания, который идентифицирует соответствующие файлы из набора MDIL файлов;
генерацию установочного пакета для приложения, содержащего набор MDIL файлов для приложения и список связывания; и
предоставление, на онлайн-рынке, установочного пакета для загрузки.
RU2015107557A 2012-09-05 2013-09-03 Генерация собственного кода из кода на промежуточном языке для приложения RU2643484C2 (ru)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/604,618 US9569184B2 (en) 2012-09-05 2012-09-05 Generating native code from intermediate language code for an application
US13/604,618 2012-09-05
PCT/US2013/057892 WO2014039458A1 (en) 2012-09-05 2013-09-03 Generating native code from intermediate language code for an application

Publications (2)

Publication Number Publication Date
RU2015107557A true RU2015107557A (ru) 2016-09-27
RU2643484C2 RU2643484C2 (ru) 2018-02-01

Family

ID=49226515

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2015107557A RU2643484C2 (ru) 2012-09-05 2013-09-03 Генерация собственного кода из кода на промежуточном языке для приложения

Country Status (19)

Country Link
US (2) US9569184B2 (ru)
EP (2) EP2893441B1 (ru)
JP (1) JP6294886B2 (ru)
KR (1) KR102077360B1 (ru)
CN (1) CN104781785B (ru)
AU (1) AU2013312865B2 (ru)
BR (1) BR112015004684A2 (ru)
CA (1) CA2883571A1 (ru)
CL (1) CL2015000524A1 (ru)
HK (1) HK1212482A1 (ru)
IL (1) IL237547A0 (ru)
MX (1) MX348681B (ru)
MY (1) MY181735A (ru)
NZ (1) NZ705379A (ru)
PH (1) PH12015500405A1 (ru)
RU (1) RU2643484C2 (ru)
SG (1) SG11201501527RA (ru)
WO (1) WO2014039458A1 (ru)
ZA (1) ZA201501182B (ru)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE537794C2 (sv) * 2012-03-20 2015-10-20 Propellerhead Software Aktiebolag Förfaranden för att distribuera en dataprogramprodukt och ett datorsystem
EP2901348A4 (en) * 2012-09-28 2016-12-14 Hewlett Packard Entpr Dev Lp ANWENDUNGSRANDOMISIERUNG
US9104504B2 (en) * 2013-03-13 2015-08-11 Dell Products Lp Systems and methods for embedded shared libraries in an executable image
US11050820B2 (en) * 2013-04-29 2021-06-29 Sap Se Cloud sharing system
US9612804B2 (en) * 2013-09-06 2017-04-04 Unisys Corporation Business suite framework for developing software applications
US9529610B2 (en) * 2013-12-30 2016-12-27 Unisys Corporation Updating compiled native instruction paths
US20160070541A1 (en) * 2014-09-08 2016-03-10 Unisys Corporation Conversion of business suite solutions
RU2635271C2 (ru) * 2015-03-31 2017-11-09 Закрытое акционерное общество "Лаборатория Касперского" Способ категоризации сборок и зависимых образов
RU2628920C2 (ru) * 2015-03-31 2017-08-22 Закрытое акционерное общество "Лаборатория Касперского" Способ обнаружения вредоносных сборок
CN105100191B (zh) * 2015-05-22 2018-09-21 华为技术有限公司 一种云编译实现Java应用安装的方法、装置及系统
CN104834530A (zh) * 2015-05-27 2015-08-12 百富计算机技术(深圳)有限公司 一种pos应用程序的开发方法及云端服务器
US9367686B1 (en) * 2015-07-21 2016-06-14 AO Kaspersky Lab System and method for antivirus checking of native images of software assemblies
WO2017047904A1 (ko) * 2015-09-15 2017-03-23 삼성전자 주식회사 신뢰된 어플리케이션을 전자 디바이스에 설치하는 방법 및 장치
GB2542355B (en) 2015-09-15 2019-07-17 Samsung Electronics Co Ltd Methods and apparatus for distributing and installing trusted applications
RU2625052C1 (ru) * 2016-03-18 2017-07-11 Акционерное общество "Лаборатория Касперского" Способ ограничения доступа образа машинного кода к ресурсам операционной системы
CN108519874B (zh) * 2017-02-27 2022-03-29 腾讯科技(深圳)有限公司 Python项目包的生成方法及装置
CN108897562B (zh) * 2018-06-27 2022-08-09 腾讯科技(深圳)有限公司 安装包更新方法、装置、介质以及设备
US11194603B2 (en) * 2018-11-16 2021-12-07 Samsung Electronics Co., Ltd. User equipment, server, control method of the user equipment and control method of the server for performing ahead-of-time (AOT) compilation of an application based on usage frequency
KR102257012B1 (ko) * 2019-01-14 2021-05-27 (주) 익투스지노믹스 다양한 클라우드에 적용 가능한 대용량 데이터 처리용 분산 처리 시스템의 설치방법
CN109814866B (zh) * 2019-01-31 2022-02-08 天津字节跳动科技有限公司 页面应用转化为原生应用的处理方法和装置
CN111580821B (zh) * 2019-02-15 2022-10-25 厦门雅基软件有限公司 脚本绑定方法、装置、电子设备及计算机可读存储介质
US11150926B2 (en) 2019-02-22 2021-10-19 International Business Machines Corporation Native code generation for cloud services
US20230022646A1 (en) * 2020-02-21 2023-01-26 Telefonaktiebolaget Lm Ericsson (Publ) Method for updating applications in cloud environments
CN112925526B (zh) * 2021-03-30 2023-09-19 平安科技(深圳)有限公司 基于Leakcanary的编译方法、装置、设备及介质
US11947966B2 (en) 2021-10-11 2024-04-02 International Business Machines Corporation Identifying computer instructions enclosed by macros and conflicting macros at build time
US11481200B1 (en) 2021-10-11 2022-10-25 International Business Machines Corporation Checking source code validity at time of code update

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3602857B2 (ja) 1991-04-23 2004-12-15 株式会社日立製作所 多機種対応型情報処理システム、および、方法
US5812854A (en) * 1996-03-18 1998-09-22 International Business Machines Corporation Mechanism for integrating user-defined instructions with compiler-generated instructions and for optimizing the integrated instruction stream
US6484313B1 (en) * 1999-06-30 2002-11-19 Microsoft Corporation Compiling and persisting of intermediate language code
US7546607B2 (en) 2002-11-19 2009-06-09 Microsoft Corporation Native code exposing virtual machine managed object
JP2004192038A (ja) * 2002-12-06 2004-07-08 Sharp Corp 情報処理装置、情報処理システム、情報処理プログラム、および該プログラムを記録した記録媒体
US20040221272A1 (en) * 2003-04-30 2004-11-04 Gansha Wu Apparatus and methods for desynchronizing object-oriented software applications in managed runtime environments
US7487498B2 (en) * 2003-11-12 2009-02-03 Microsoft Corporation Strategy for referencing code resources
US20050188203A1 (en) * 2004-02-19 2005-08-25 Jp Mobile Operating L.P. Method for packaging information with digitally signed software without breaking signature
US7409675B2 (en) * 2004-02-27 2008-08-05 Microsoft Corporation Code rewriting
WO2005114403A1 (en) * 2004-05-21 2005-12-01 Computer Associates Think, Inc. Method and apparatus for reusing a computer software library
US7730472B2 (en) 2004-09-24 2010-06-01 Hewlett-Packard Development Company, L.P. Dynamic linking of modules in a pre-operating system environment
KR20070067207A (ko) * 2004-10-12 2007-06-27 픽셀 (리서치) 리미티드 런타임 동적 링킹
US20060080682A1 (en) * 2004-10-12 2006-04-13 Picsel Research Ltd. Run time dynamic linking
US7730465B2 (en) 2004-10-22 2010-06-01 Microsoft Corporation Mixed types
US20060136907A1 (en) * 2004-12-20 2006-06-22 Microsoft Corporation Language-neutral and language-specific installation packages for software setup
US8074231B2 (en) * 2005-10-26 2011-12-06 Microsoft Corporation Configuration of isolated extensions and device drivers
US7987457B2 (en) 2007-06-25 2011-07-26 Microsoft Corporation Targeted patching for native generation images
US20090064196A1 (en) * 2007-08-31 2009-03-05 Microsoft Corporation Model based device driver code generation
CN100478897C (zh) * 2007-12-04 2009-04-15 腾讯科技(深圳)有限公司 实现在游戏运行过程中自动验证支付的方法、装置和系统
CN101546311B (zh) * 2008-03-27 2012-05-02 北京铭万互联科技有限公司 回收站的数据处理方法及数据处理装置
KR101092373B1 (ko) * 2010-01-07 2011-12-09 한국과학기술연구원 소프트웨어 패키지의 생성 및 설치를 위한 시스템 및 방법
US8869138B2 (en) * 2011-11-11 2014-10-21 Wyse Technology L.L.C. Robust firmware update with recovery logic
US8365156B2 (en) * 2010-04-17 2013-01-29 Microsoft Corporation Intermediate language support for change resilience
US8924922B2 (en) * 2010-06-14 2014-12-30 Microsoft Corporation Pre-compiling hosted managed code
EP2405352A1 (en) 2010-07-08 2012-01-11 Fujitsu Limited Instrumentation of proprietary software libraries
US8683462B2 (en) 2010-10-22 2014-03-25 Adobe Systems Incorporated Handling calls to native code in a managed code environment

Also Published As

Publication number Publication date
WO2014039458A1 (en) 2014-03-13
JP6294886B2 (ja) 2018-03-14
NZ705379A (en) 2018-04-27
CN104781785A (zh) 2015-07-15
KR20150052068A (ko) 2015-05-13
PH12015500405B1 (en) 2015-04-20
CL2015000524A1 (es) 2015-08-28
AU2013312865A1 (en) 2015-03-05
JP2015531502A (ja) 2015-11-02
US20170109148A1 (en) 2017-04-20
EP3249526A1 (en) 2017-11-29
BR112015004684A2 (pt) 2017-08-08
EP2893441A1 (en) 2015-07-15
US9569184B2 (en) 2017-02-14
US10795652B2 (en) 2020-10-06
HK1212482A1 (en) 2016-06-10
IL237547A0 (en) 2015-04-30
CA2883571A1 (en) 2014-03-13
KR102077360B1 (ko) 2020-02-13
CN104781785B (zh) 2018-05-15
RU2643484C2 (ru) 2018-02-01
MY181735A (en) 2021-01-05
MX348681B (es) 2017-06-23
SG11201501527RA (en) 2015-03-30
EP3249526B1 (en) 2020-03-25
ZA201501182B (en) 2016-10-26
AU2013312865B2 (en) 2018-11-08
PH12015500405A1 (en) 2015-04-20
MX2015002906A (es) 2015-06-03
US20140068583A1 (en) 2014-03-06
EP2893441B1 (en) 2017-08-30

Similar Documents

Publication Publication Date Title
RU2015107557A (ru) Генерация собственного кода из кода на промежуточном языке для приложения
JP2015531502A5 (ru)
US9250937B1 (en) Code randomization for just-in-time compilers
US8959495B2 (en) Unifying static and dynamic compiler optimizations in source-code bases
CN105446712B (zh) 一种应用程序缺陷修补方法及装置
ES2901532T3 (es) Autodepuración
Lee et al. A study on the smart virtual machine for executing virtual machine codes on smart platforms
US20190146766A1 (en) Device profiling in gpu accelerators by using host-device
D'Elia et al. Flexible on-stack replacement in LLVM
US20130311980A1 (en) Selective compiling method, device, and corresponding computer program product
Engelke et al. Instrew: Leveraging LLVM for high performance dynamic binary instrumentation
US9098355B2 (en) Method and apparatus for substituting compiler built-in helper functions with machine instructions
CN103744682A (zh) 一种分开编译异构混编程序的方法和系统
CN110032425B (zh) 一种动态链接库文件虚拟化方法、系统及存储介质
Perez et al. A hybrid just-in-time compiler for android: comparing jit types and the result of cooperation
Ziegler et al. Honey, I shrunk the ELFs: Lightweight binary tailoring of shared libraries
Olivier et al. A syscall-level binary-compatible unikernel
JP2016528638A5 (ru)
Maier et al. Supercharge a language runtime!
AU2017239628A1 (en) Dynamic Software System
Levin Dalvik and ART
Liao Android RenderScript on LLVM
Sadek et al. Dynamic Code Loading to a Bare-metal Embedded Target
Sveshnikova et al. Using Virtualisation for Reproducible Research and Code Portability
Joneš iOS emulator for Windows

Legal Events

Date Code Title Description
HZ9A Changing address for correspondence with an applicant
MM4A The patent is invalid due to non-payment of fees

Effective date: 20190904