RU2015121749A - Компилятор, генерирующий безоператорный код - Google Patents
Компилятор, генерирующий безоператорный код Download PDFInfo
- 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
Links
- 238000004590 computer program Methods 0.000 claims abstract 45
- 230000007704 transition Effects 0.000 claims abstract 5
- 238000000034 method Methods 0.000 claims 4
- 238000006243 chemical reaction Methods 0.000 claims 1
- 230000001419 dependent effect Effects 0.000 claims 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/425—Lexical analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/52—Binary 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, когда компьютерная программа исполняется на компьютере.
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)
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)
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 |
-
2013
- 2013-10-30 BR BR112015010016A patent/BR112015010016A2/pt not_active IP Right Cessation
- 2013-10-30 EP EP13786213.2A patent/EP2917833B1/en not_active Revoked
- 2013-10-30 MX MX2015005621A patent/MX2015005621A/es not_active Application Discontinuation
- 2013-10-30 JP JP2015540106A patent/JP6429785B2/ja not_active Expired - Fee Related
- 2013-10-30 WO PCT/EP2013/072668 patent/WO2014072209A1/en active Application Filing
- 2013-10-30 US US14/435,595 patent/US9921813B2/en not_active Expired - Fee Related
- 2013-10-30 RU RU2015121749A patent/RU2015121749A/ru unknown
- 2013-10-30 CN CN201380058354.5A patent/CN104823161B/zh not_active Expired - Fee Related
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 |