WO2021019401A1 - Automatic verification of optimization of high level constructs using test vectors - Google Patents

Automatic verification of optimization of high level constructs using test vectors Download PDF

Info

Publication number
WO2021019401A1
WO2021019401A1 PCT/IB2020/057017 IB2020057017W WO2021019401A1 WO 2021019401 A1 WO2021019401 A1 WO 2021019401A1 IB 2020057017 W IB2020057017 W IB 2020057017W WO 2021019401 A1 WO2021019401 A1 WO 2021019401A1
Authority
WO
WIPO (PCT)
Prior art keywords
machine instructions
high level
executable code
test
instructions
Prior art date
Legal status (The legal status 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 status listed.)
Ceased
Application number
PCT/IB2020/057017
Other languages
English (en)
French (fr)
Inventor
Iain Alexander IRELAND
Reid Copeland
Allan Kielstra
David Kevin SIEGWART
Toshihiko Koju
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
IBM China Investment Co Ltd
IBM United Kingdom Ltd
International Business Machines Corp
Original Assignee
IBM China Investment Co Ltd
IBM United Kingdom Ltd
International Business Machines Corp
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 IBM China Investment Co Ltd, IBM United Kingdom Ltd, International Business Machines Corp filed Critical IBM China Investment Co Ltd
Priority to DE112020003634.0T priority Critical patent/DE112020003634T5/de
Priority to GB2201366.8A priority patent/GB2604237B/en
Priority to JP2022500767A priority patent/JP7410269B2/ja
Priority to CN202080052336.6A priority patent/CN114174983B/zh
Publication of WO2021019401A1 publication Critical patent/WO2021019401A1/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/3668Testing of software
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/3668Testing of software
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/3668Testing of software
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/53Decompilation; Disassembly

Definitions

  • the intermediate software layer will carry out additional compilation each time the computer program is run, usually to translate the intermediate form of the source code into executable code that can be directly executed by the data processing system.
  • Java and all Java-based trademarks and logos are trademarks or registered trademarks of Oracle and/or its affiliates.
  • Workloads layer 90 provides examples of functionality for which the cloud computing environment may be utilized. Examples of workloads and functions which may be provided from this layer include: mapping and navigation 91, software development and lifecycle management 92, virtual classroom education delivery 93, data analytics processing 94, transaction processing 95, and learning model processing 96, for performing compilation of high level programming instructions.
  • a network adapter 126 interconnects bus 133 with an outside network 136 enabling the computer system 100 to communicate with other such systems.
  • a screen e.g., a display monitor
  • a screen 135 is connected to system bus 133 by display adaptor 132, which may include a graphics adapter to improve the performance of graphics intensive applications and a video controller.
  • adapters 127, 126, and 132 may be connected to one or more I/O busses that are connected to system bus 133 via an intermediate bus bridge (not shown).
  • Suitable I/O buses for connecting peripheral devices such as hard disk controllers, network adapters, and graphics adapters typically include common protocols, such as the Peripheral Component Interconnect (PCI).
  • PCI Peripheral Component Interconnect
  • the code sequences generated for these high level constructs can vary significantly, depending on the details of the high level construct. Identifying the scope and purpose of such a code sequence based solely on the compiled binary is a prohibitively difficult technical problem.
  • State of the art binary optimizers are limited in ability to recover a corresponding IL representation.
  • Such binary optimizers are able to convert code that is compiled with an older version of a compiler, where the first executable code can be easily converted into an IL representation, and where the compiler is not under active development.
  • the binary optimizer can optimize the high level construct, because the IL representation of the high level construct is easy to determine and is not subject to change. But this is not true for any compiler that is under development, and thus using new compiler-optimization technology. This can result in more or different types of these sequences being generated (even for existing high level constructs like INSPECT or numeric editing).
  • an IL can be an internal language, it could be the source language of the computer program, it could be the source language with internal annotations, it could be another binary language, or any other type of representation. All of these are examples of being intermediate between the first executable code and the second executable code, the second executable code being an optimization of the first executable code.
  • the binary optimizer 440 is used to generate new optimized instructions for the high level construct 412 from the IL representation 450 of the high level construct 412, at 540.
  • the new instructions are to be compared to the instructions that were generated by the compiler 420.
  • the matching of the new code for the high level construct 412 and the old code for that high level construct 412 is determined using a Boolean satisfiability (SAT) solver, or other such tool.
  • SAT Boolean satisfiability

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
PCT/IB2020/057017 2019-07-31 2020-07-24 Automatic verification of optimization of high level constructs using test vectors Ceased WO2021019401A1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
DE112020003634.0T DE112020003634T5 (de) 2019-07-31 2020-07-24 Automatische verifizierung der optimierung von konstrukten auf hoher ebene unter verwendung von prüfvektoren
GB2201366.8A GB2604237B (en) 2019-07-31 2020-07-24 Automatic verification of optimization of high level constructs using test vectors
JP2022500767A JP7410269B2 (ja) 2019-07-31 2020-07-24 テスト・ベクタを使用した高水準コンストラクトの最適化の自動検証
CN202080052336.6A CN114174983B (zh) 2019-07-31 2020-07-24 用于高级构造的优化的自动验证的方法和系统

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/527,362 US10776255B1 (en) 2019-07-31 2019-07-31 Automatic verification of optimization of high level constructs using test vectors
US16/527,362 2019-07-31

Publications (1)

Publication Number Publication Date
WO2021019401A1 true WO2021019401A1 (en) 2021-02-04

Family

ID=72425773

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/IB2020/057017 Ceased WO2021019401A1 (en) 2019-07-31 2020-07-24 Automatic verification of optimization of high level constructs using test vectors

Country Status (6)

Country Link
US (1) US10776255B1 (https=)
JP (1) JP7410269B2 (https=)
CN (1) CN114174983B (https=)
DE (1) DE112020003634T5 (https=)
GB (1) GB2604237B (https=)
WO (1) WO2021019401A1 (https=)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11886848B2 (en) 2022-05-25 2024-01-30 International Business Machines Corporation Binary translation using raw binary code with compiler produced metadata

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120198427A1 (en) * 2011-01-28 2012-08-02 International Business Machines Corporation Ensuring Register Availability for Dynamic Binary Optimization
US20150378871A1 (en) * 2014-06-25 2015-12-31 Microsoft Corporation Techniques for edit-and-continue and enhanced optimized debugging on optimized code
US10339837B1 (en) * 2018-06-01 2019-07-02 Polyverse Corporation Distribution of scrambled binary output using a randomized compiler

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4057938B2 (ja) * 2003-03-26 2008-03-05 株式会社東芝 コンパイラ、コンパイル方法、及びプログラム開発ツール
US20060031820A1 (en) * 2004-08-09 2006-02-09 Aizhong Li Method for program transformation and apparatus for COBOL to Java program transformation
US7624384B2 (en) * 2004-11-30 2009-11-24 Intel Corporation Apparatus, system, and method of dynamic binary translation with translation reuse
US8103674B2 (en) * 2007-12-21 2012-01-24 Microsoft Corporation E-matching for SMT solvers
US8381175B2 (en) * 2010-03-16 2013-02-19 Microsoft Corporation Low-level code rewriter verification
CN102622260B (zh) * 2012-02-27 2014-12-10 中国科学院计算技术研究所 一种在线迭代编译的优化方法和优化系统
US8959495B2 (en) * 2012-09-14 2015-02-17 Oracle International Corporation Unifying static and dynamic compiler optimizations in source-code bases
JP5967618B2 (ja) * 2013-04-17 2016-08-10 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 二進化十進数型変数へのアクセスを有する言語のバイナリコードを最適化する方法、並びにそのコンピュータ及びコンピュータ・プログラム
JP5988444B2 (ja) * 2014-02-14 2016-09-07 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 最適化したバイナリー・モジュールをテストする方法、並びに、当該最適化したバイナリー・モジュールをテストするためのコンピュータ及びそのコンピュータ・プログラム
US9442707B2 (en) * 2014-06-25 2016-09-13 Microsoft Technology Licensing, Llc Incremental whole program compilation of code
US9563536B1 (en) * 2015-10-19 2017-02-07 International Business Machines Corporation Performance neutral isolation of runtime discrepancies in binary code
US9715377B1 (en) 2016-01-04 2017-07-25 International Business Machines Corporation Behavior based code recompilation triggering scheme
AU2016396782B2 (en) * 2016-03-11 2021-07-22 Lzlabs Gmbh Load module compiler
US10579498B2 (en) * 2016-07-31 2020-03-03 Microsoft Technology Licensing, Llc. Debugging tool for a JIT compiler
US10809985B2 (en) * 2017-03-09 2020-10-20 Microsoft Technology Licensing, Llc Instrumenting program code
US10514909B2 (en) * 2017-03-29 2019-12-24 Technion Research & Development Foundation Limited Similarity of binaries

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120198427A1 (en) * 2011-01-28 2012-08-02 International Business Machines Corporation Ensuring Register Availability for Dynamic Binary Optimization
US20150378871A1 (en) * 2014-06-25 2015-12-31 Microsoft Corporation Techniques for edit-and-continue and enhanced optimized debugging on optimized code
US10339837B1 (en) * 2018-06-01 2019-07-02 Polyverse Corporation Distribution of scrambled binary output using a randomized compiler

Also Published As

Publication number Publication date
GB2604237B (en) 2023-03-22
JP2022542007A (ja) 2022-09-29
US10776255B1 (en) 2020-09-15
CN114174983A (zh) 2022-03-11
GB2604237A (en) 2022-08-31
CN114174983B (zh) 2022-10-11
DE112020003634T5 (de) 2022-06-09
JP7410269B2 (ja) 2024-01-09

Similar Documents

Publication Publication Date Title
US11074154B2 (en) Identifying a source file for use in debugging compiled code
US11675575B2 (en) Checking source code validity at time of code update
US10235144B2 (en) Reconfiguration of address space based on loading short pointer mode application
US11036513B2 (en) Executing short pointer mode applications loaded in a memory address space having one portion addressable by short pointers and a shadow copy of the one portion
US20180059981A1 (en) Short pointer mode applications in long pointer mode environments
US20220058006A1 (en) Runtime type identification of an object utilizing class inheritance relationships
US11947966B2 (en) Identifying computer instructions enclosed by macros and conflicting macros at build time
US11347523B2 (en) Updated shared library reloading without stopping the execution of an application
US11983090B2 (en) Setting breakpoints for source code segments enclosed by macros
US12253936B2 (en) Validating inter-partition communication in microservice decomposition
US10776255B1 (en) Automatic verification of optimization of high level constructs using test vectors
US9519566B2 (en) Modeling memory use of applications
US12189515B2 (en) Identifying regression test failures
US20190317877A1 (en) Application state monitoring
US10936290B2 (en) Compile-time folding of assumed constant values
US12619426B2 (en) Impact analysis on source code change
US12236217B2 (en) Transformation of computer code based on idiom recognition and value constraint analysis
US20230214315A1 (en) Generating workloads for system verification
EP3164800B1 (en) Bridging a module system and a non-module system
EP4649415A1 (en) Member invocation declarative interception

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20848103

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2022500767

Country of ref document: JP

Kind code of ref document: A

ENP Entry into the national phase

Ref document number: 202201366

Country of ref document: GB

Kind code of ref document: A

Free format text: PCT FILING DATE = 20200724

WWE Wipo information: entry into national phase

Ref document number: 2201366.8

Country of ref document: GB

122 Ep: pct application non-entry in european phase

Ref document number: 20848103

Country of ref document: EP

Kind code of ref document: A1

WWG Wipo information: grant in national office

Ref document number: 2201366.8

Country of ref document: GB