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 PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3668—Testing of software
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3668—Testing of software
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3668—Testing of software
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; 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)
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)
| 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)
| 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)
| 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 |
-
2019
- 2019-07-31 US US16/527,362 patent/US10776255B1/en not_active Expired - Fee Related
-
2020
- 2020-07-24 JP JP2022500767A patent/JP7410269B2/ja active Active
- 2020-07-24 CN CN202080052336.6A patent/CN114174983B/zh active Active
- 2020-07-24 DE DE112020003634.0T patent/DE112020003634T5/de not_active Withdrawn
- 2020-07-24 WO PCT/IB2020/057017 patent/WO2021019401A1/en not_active Ceased
- 2020-07-24 GB GB2201366.8A patent/GB2604237B/en active Active
Patent Citations (3)
| 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 |