RU2015121749A - Компилятор, генерирующий безоператорный код - Google Patents

Компилятор, генерирующий безоператорный код Download PDF

Info

Publication number
RU2015121749A
RU2015121749A RU2015121749A RU2015121749A RU2015121749A RU 2015121749 A RU2015121749 A RU 2015121749A RU 2015121749 A RU2015121749 A RU 2015121749A RU 2015121749 A RU2015121749 A RU 2015121749A RU 2015121749 A RU2015121749 A RU 2015121749A
Authority
RU
Russia
Prior art keywords
computer program
code
generated
tables
expression
Prior art date
Application number
RU2015121749A
Other languages
English (en)
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=47757443&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=RU2015121749(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Конинклейке Филипс Н.В. filed Critical Конинклейке Филипс Н.В.
Publication of RU2015121749A publication Critical patent/RU2015121749A/ru

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/425Lexical analysis
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

1. Компилятор для компиляции первой компьютерной программы, написанной на первом компьютерном языке программирования, во вторую компьютерную программу,- при этом компилятор содержит генератор кода для генерации второй компьютерной программы путем генерации таблиц и кода машинного языка, причем сгенерированные таблицы и сгенерированный код машинного языка совместно образуют вторую компьютерную программу, причем сгенерированный код машинного языка ссылается на таблицы, причем- компилятор выполнен с возможностью идентификации арифметического или логического выражения в первой компьютерной программе, причем данное выражение зависит от по меньшей мере одной переменной и генератор кода выполнен с возможностью генерировать одну или более таблиц, представляющих заранее вычисленные результаты идентифицированного выражения для множественных значений упомянутой переменной, и генерировать код машинного языка для реализации идентифицированного выражения во второй компьютерной программе путем осуществления доступа к сгенерированным одной или более таблицам, представляющим заранее вычисленные результаты, и причемкод машинного языка, сгенерированный для реализации идентифицированного выражения,- не содержит арифметических или логических машинных команд и/или- не содержит условных машинных команд.2. Компилятор по п. 1, причем компилятор выполнен с возможностью идентификации условного выражения, зависящего от условного оператора, в первой компьютерной программе, и генератор кода выполнен с возможностью генерировать одну или более заранее вычисленных таблиц переходов для идентифицированного выражения для

Claims (14)

1. Компилятор для компиляции первой компьютерной программы, написанной на первом компьютерном языке программирования, во вторую компьютерную программу,
- при этом компилятор содержит генератор кода для генерации второй компьютерной программы путем генерации таблиц и кода машинного языка, причем сгенерированные таблицы и сгенерированный код машинного языка совместно образуют вторую компьютерную программу, причем сгенерированный код машинного языка ссылается на таблицы, причем
- компилятор выполнен с возможностью идентификации арифметического или логического выражения в первой компьютерной программе, причем данное выражение зависит от по меньшей мере одной переменной и генератор кода выполнен с возможностью генерировать одну или более таблиц, представляющих заранее вычисленные результаты идентифицированного выражения для множественных значений упомянутой переменной, и генерировать код машинного языка для реализации идентифицированного выражения во второй компьютерной программе путем осуществления доступа к сгенерированным одной или более таблицам, представляющим заранее вычисленные результаты, и причем
код машинного языка, сгенерированный для реализации идентифицированного выражения,
- не содержит арифметических или логических машинных команд и/или
- не содержит условных машинных команд.
2. Компилятор по п. 1, причем компилятор выполнен с возможностью идентификации условного выражения, зависящего от условного оператора, в первой компьютерной программе, и генератор кода выполнен с возможностью генерировать одну или более заранее вычисленных таблиц переходов для идентифицированного выражения для множественных значений условного оператора и генерировать код машинного языка для реализации идентифицированного выражения во второй компьютерной программе путем осуществления доступа к сгенерированным одной
или более таблицам переходов.
3. Компилятор по п. 1, в котором сгенерированный код машинного языка для реализации выражения является безоператорным, причем безоператорный код машинного языка содержит только
- операции загрузки и сохранения для переноса данных между регистрами и памятью и
- операции перехода.
4. Компилятор по п. 3, в котором операции загрузки служат для загрузки регистра одним из: постоянной, значения, хранящегося по адресу памяти, и другого регистра; причем адрес памяти указан одним или более регистрами и/или постоянными.
5. Компилятор по п. 3, в котором операции сохранения служат для сохранения одного или более регистров и/или постоянных по одному или более адресам памяти, причем адреса памяти указаны одним или более регистрами и/или постоянными.
6. Компилятор по п. 3, в котором операции перехода служат для перехода к адресу памяти, причем адрес памяти указан одним или более регистрами и/или постоянными, или адрес памяти извлекается из дополнительного адреса памяти.
7. Компилятор по п. 1, в котором машинный язык действует на регистры, причем поднабор регистров образует адресные регистры для содержания адресов памяти.
8. Компилятор по п. 1, причем компилятор выполнен с возможностью идентификации в первой компьютерной программе выражения, действующего на один или более элементов данных, причем генератор кода выполнен с возможностью формирования кода машинного языка для:
- загрузки каждого из элементов данных в соответствующий регистр одного и того же адресного регистра,
- загрузки данных в другие регистры адресного регистра, чтобы адресный регистр указывал запись таблицы,
- загрузки результата оператора, действующего на элементы данных, из адреса памяти, указанного адресным регистром, в регистр.
9. Компилятор по п. 1, причем компилятор выполнен с
возможностью идентификации в первой компьютерной программе условного перехода, причем генератор кода выполнен с возможностью формирования машинного кода для:
- загрузки регистра, удерживающего значение, указывающее условный оператор в регистре адресного регистра,
- загрузки данных в другие регистры адресного регистра, чтобы адресный регистр указывал запись таблицы,
- перехода по адресу памяти, хранящемуся в памяти по адресу памяти, указанному адресным регистром.
10. Компьютер, содержащий компилятор по п. 1.
11. Способ компиляции для компиляции первой компьютерной программы, написанной на первом компьютерном языке программирования, во вторую компьютерную программу, причем способ содержит этап, на котором:
- генерируют вторую компьютерную программу путем генерации таблиц и кода машинного языка, причем сгенерированные таблицы и сгенерированный код машинного языка совместно образуют вторую компьютерную программу, причем сгенерированный код машинного языка ссылается на таблицы, при этом:
- идентифицируют арифметическое или логическое выражение в первой компьютерной программе, причем данное выражение зависит от по меньшей мере одной переменной, и генерируют одну или более таблиц, представляющих заранее вычисленные результаты идентифицированного выражения для множественных значений упомянутой переменной, и генерируют код машинного языка для реализации идентифицированного выражения во второй компьютерной программе путем осуществления доступа к сгенерированным одной или более таблицам, представляющим заранее вычисленные результаты, причем
код машинного языка, сгенерированный для реализации идентифицированного выражения,
- не содержит арифметических или логических машинных команд и/или
- не содержит условных машинных команд.
12. Способ компиляции по п. 11, в котором первая компьютерная программа является программой виртуальной машины
для интерпретации четвертой компьютерной программы,
причем способ дополнительно содержит этап, на котором:
- компилируют третью компьютерную программу, написанную на третьем компьютерном языке программирования, в четвертую компьютерную программу, написанную на четвертом компьютерном языке программирования, посредством того, что:
генерируют четвертую компьютерную программу путем генерации дополнительных таблиц и кода четвертого языка программирования, причем эти дополнительные таблицы и код четвертого языка программирования совместно образуют четвертую компьютерную программу, причем сгенерированный код четвертого языка программирования ссылается на дополнительные таблицы, при этом:
идентифицируют арифметическое или логическое выражение в третьей компьютерной программе, причем это выражение зависит от по меньшей мере одной переменной, и генерируют одну или более таблиц, представляющих заранее вычисленные результаты идентифицированного выражения для множественных значений упомянутой переменной, и генерируют код четвертого языка программирования для реализации идентифицированного выражения в третьей компьютерной программе путем осуществления доступа к одной или более сгенерированным таблицам, представляющим заранее вычисленные результаты.
13. Компьютерная программа, содержащая:
- первые таблицы и код второго языка программирования, сгенерированный путем компиляции первой компьютерной программы, написанной на первом компьютерном языке программирования, во вторую компьютерную программу, написанную на втором компьютерном языке программирования, компилятором для компиляции первой компьютерной программы, написанной на первом компьютерном языке программирования, во вторую компьютерную программу, причем компилятор содержит генератор кода для генерации второй компьютерной программы путем генерации таблиц и кода второго языка программирования, причем сгенерированные таблицы и сгенерированный код второго языка программирования совместно образуют вторую компьютерную программу, причем сгенерированный код второго языка программирования ссылается на таблицы, причем
компилятор выполнен с возможностью идентификации арифметического или логического выражения в первой компьютерной программе, причем данное выражение зависит от по меньшей мере одной переменной, и генератор кода выполнен с возможностью генерировать одну или более таблиц, представляющих заранее вычисленные результаты идентифицированного выражения для множественных значений упомянутой переменной, и генерировать код на втором языке программирования для реализации идентифицированного выражения во второй компьютерной программе путем осуществления доступа к сгенерированным одной или более таблицам, представляющим заранее вычисленные результаты; и при этом код машинного языка, сгенерированный для реализации идентифицированного выражения,
- не содержит арифметических или логических машинных команд и/или
- не содержит условных машинных команд,
и при этом компьютерная программа дополнительно содержит:
- вторые таблицы и код машинного языка, сгенерированный путем компиляции программы виртуальной машины для интерпретации второй компьютерной программы в машинный язык компилятором по п. 1.
14. Компьютерная программа, содержащая средство кода компьютерной программы, выполненное с возможностью осуществления всех этапов по п. 11, когда компьютерная программа исполняется на компьютере.
RU2015121749A 2012-11-07 2013-10-30 Компилятор, генерирующий безоператорный код RU2015121749A (ru)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201261723410P 2012-11-07 2012-11-07
US61/723,410 2012-11-07
EP13156991.5 2013-02-27
EP13156991 2013-02-27
PCT/EP2013/072668 WO2014072209A1 (en) 2012-11-07 2013-10-30 Compiler generating operator free code

Publications (1)

Publication Number Publication Date
RU2015121749A true RU2015121749A (ru) 2016-12-27

Family

ID=47757443

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2015121749A RU2015121749A (ru) 2012-11-07 2013-10-30 Компилятор, генерирующий безоператорный код

Country Status (8)

Country Link
US (1) US9921813B2 (ru)
EP (1) EP2917833B1 (ru)
JP (1) JP6429785B2 (ru)
CN (1) CN104823161B (ru)
BR (1) BR112015010016A2 (ru)
MX (1) MX2015005621A (ru)
RU (1) RU2015121749A (ru)
WO (1) WO2014072209A1 (ru)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160328539A1 (en) * 2015-05-05 2016-11-10 Nxp B.V. Obscuring Software Code With Split Variables
US10068070B2 (en) * 2015-05-05 2018-09-04 Nxp B.V. White-box elliptic curve point multiplication
CN105404497B (zh) * 2015-10-26 2018-05-25 北京锐安科技有限公司 一种逻辑表达式的解析方法及装置
CN105740215A (zh) * 2016-01-23 2016-07-06 北京掌阔移动传媒科技有限公司 一种数据通信编码和解码方法
US10481881B2 (en) 2017-06-22 2019-11-19 Archeo Futurus, Inc. Mapping a computer code to wires and gates
US9996328B1 (en) 2017-06-22 2018-06-12 Archeo Futurus, Inc. Compiling and optimizing a computer code by minimizing a number of states in a finite machine corresponding to the computer code
WO2018236384A1 (en) * 2017-06-22 2018-12-27 Archeo Futurus, Inc. COMPILATION AND OPTIMIZATION OF A COMPUTER CODE BY MINIMIZING A NUMBER OF STATES IN A FINAL MACHINE CORRESPONDING TO THE COMPUTER CODE
JP7221954B2 (ja) * 2017-11-09 2023-02-14 エヌチェーン ライセンシング アーゲー 変更から検証鍵を保護し、正当性のプルーフの有効性を確かめるためのシステム
EP3591550A1 (en) * 2018-07-06 2020-01-08 Koninklijke Philips N.V. A compiler device with masking function
US10996981B2 (en) * 2019-03-15 2021-05-04 Toshiba Memory Corporation Processor zero overhead task scheduling
CN110543407B (zh) * 2019-08-21 2021-11-05 杭州趣链科技有限公司 一种Solidity智能合约性能静态分析方法
CN111091612B (zh) * 2019-10-09 2023-06-02 武汉凌久微电子有限公司 一种抽象目标码架构的着色语言机器码生成方法及装置
US11921616B1 (en) * 2022-03-29 2024-03-05 Amazon Technologies, Inc. Retaining Dafny specifications
US11934810B2 (en) * 2022-05-19 2024-03-19 Microsoft Technology Licensing, Llc Translating an edit from a child computer language to a parent computer language while maintaining a semantic meaning of the edit

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5781752A (en) * 1996-12-26 1998-07-14 Wisconsin Alumni Research Foundation Table based data speculation circuit for parallel processing computer
JPH11110224A (ja) * 1997-09-29 1999-04-23 Nec Corp 言語処理装置及び方法、並びに情報記憶媒体
US6658492B1 (en) * 1998-03-20 2003-12-02 Sun Microsystems, Inc. System and method for reducing the footprint of preloaded classes
JP2000194567A (ja) * 1998-12-25 2000-07-14 Toshiba Corp コンパイル装置、コンパイル方法、コンパイルプログラムを格納したコンピュ―タ読み取り可能な記録媒体および目的プログラムを格納したコンピュ―タ読み取り可能な記録媒体
CA2298990A1 (en) * 2000-02-18 2001-08-18 Cloakware Corporation Method and system for resistance to power analysis
US7996671B2 (en) 2003-11-17 2011-08-09 Bluerisc Inc. Security of program executables and microprocessors based on compiler-architecture interaction
US7703088B2 (en) 2005-09-30 2010-04-20 Intel Corporation Compressing “warm” code in a dynamic binary translation environment
US8106463B2 (en) 2005-12-06 2012-01-31 Arm, Inc. Memory cells for read only memories
JP4938766B2 (ja) * 2006-04-28 2012-05-23 パナソニック株式会社 プログラム難読化システム、プログラム難読化装置及びプログラム難読化方法
US20080127142A1 (en) 2006-11-28 2008-05-29 Microsoft Corporation Compiling executable code into a less-trusted address space
US7796671B2 (en) 2008-03-31 2010-09-14 Electro Scientific Industries, Inc. Multi-pass optical power amplifier
US9134977B2 (en) * 2010-02-26 2015-09-15 Red Hat, Inc. Compiler operation for handling conditional statements
CN102043659A (zh) * 2010-12-08 2011-05-04 上海交通大学 消除内存访问冲突的编译装置及其实现方法
EP2482184A1 (en) * 2011-02-01 2012-08-01 Irdeto B.V. Adaptive obfuscated virtual machine

Also Published As

Publication number Publication date
JP2015537298A (ja) 2015-12-24
MX2015005621A (es) 2015-08-20
WO2014072209A1 (en) 2014-05-15
EP2917833B1 (en) 2018-12-12
CN104823161A (zh) 2015-08-05
BR112015010016A2 (pt) 2017-07-11
US20150277865A1 (en) 2015-10-01
CN104823161B (zh) 2018-10-09
JP6429785B2 (ja) 2018-11-28
US9921813B2 (en) 2018-03-20
EP2917833A1 (en) 2015-09-16

Similar Documents

Publication Publication Date Title
RU2015121749A (ru) Компилятор, генерирующий безоператорный код
US10776087B2 (en) Sequence optimizations in a high-performance computing environment
JP2015537298A5 (ru)
US6973644B2 (en) Program interpreter
US9098298B2 (en) Optimization method for compiler, optimizer for a compiler and storage medium storing optimizing code
US9424009B2 (en) Handling pointers in program code in a system that supports multiple address spaces
US8843912B2 (en) Optimization of an application to reduce local memory usage
US11119918B2 (en) Execution using multiple page tables
RU2015103934A (ru) Процессор компьютера и система без арифметико-логического блока
JP2015509249A5 (ru)
US8266416B2 (en) Dynamic reconfiguration supporting method, dynamic reconfiguration supporting apparatus, and dynamic reconfiguration system
CN104965687A (zh) 基于指令集生成的大数据处理方法及装置
CN103678961A (zh) 代码动态生成的方法
US20140196019A1 (en) Method and Apparatus for Substituting Compiler Built-in Helper Functions with Machine Instructions
WO2014162250A4 (en) Method for enabling independent compilation of program and a system therefor
US8495595B2 (en) Method of selecting an expression evaluation technique for domain-specific language compilation
JP2017045144A5 (ru)
CN102799434B (zh) 一种利用软件保护装置实现自动代码移植的方法
US20140013312A1 (en) Source level debugging apparatus and method for a reconfigurable processor
Bhatt et al. Peephole Optimization Technique for analysis and review of Compile Design and Construction
US7568191B2 (en) Method and apparatus for superword register value numbering
JP2009258796A (ja) プログラム開発装置及びプログラム開発方法
Mohr et al. Hardware acceleration for programs in SSA form
CN105335230A (zh) 一种服务处理方法及装置
Strobel et al. A backend tool for the integration of memory optimizations into embedded software