JP2015537298A - 演算子のないコンパイラ - Google Patents
演算子のないコンパイラ Download PDFInfo
- Publication number
- JP2015537298A JP2015537298A JP2015540106A JP2015540106A JP2015537298A JP 2015537298 A JP2015537298 A JP 2015537298A JP 2015540106 A JP2015540106 A JP 2015540106A JP 2015540106 A JP2015540106 A JP 2015540106A JP 2015537298 A JP2015537298 A JP 2015537298A
- Authority
- JP
- Japan
- Prior art keywords
- computer program
- compiler
- code
- generated
- computer
- 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.)
- Granted
Links
- 238000004590 computer program Methods 0.000 claims abstract description 134
- 230000015654 memory Effects 0.000 claims description 80
- 238000000034 method Methods 0.000 claims description 33
- 230000014509 gene expression Effects 0.000 claims description 15
- 230000001419 dependent effect Effects 0.000 claims description 6
- 230000009191 jumping Effects 0.000 claims description 4
- 238000007792 addition Methods 0.000 description 20
- 238000004364 calculation method Methods 0.000 description 6
- 230000000875 corresponding effect Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000002596 correlated effect Effects 0.000 description 3
- 238000000354 decomposition reaction Methods 0.000 description 3
- 238000011156 evaluation Methods 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000007619 statistical method Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 235000021438 curry Nutrition 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000001066 destructive effect Effects 0.000 description 1
- 230000005670 electromagnetic radiation Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000007480 spreading Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
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
Description
しかしながら、これは、X2+Y2のテーブルとして実装され、このテーブルのアクセスに対してコンパイルされてもよい。これは、1つの(Curriedの場合には2つの)テーブルアクセスをもたらすだろう。コンパイラ/リンカー及びVMの間の結合体は、テーブルをVMに渡すことにより維持され得る。ラベル付けされたテーブルは、コンパイラの出力及びVMへの入力になる。コンパイラにより供給されるコードにおいて、その後、これらのラベルが参照される。これは、使っていない演算のテーブルが省略され得るので、改善記憶方法であり得る。一実施形態において、コンパイラは、第1のプログラムにおいて、値を1、2又は複数の数字の入力に割り当てる表現を識別するための表現ユニットを有し、コードジェネレータは、数字の入力の全ての値のための表現の結果を表すテーブルを生成するように構成される。面白いことに、表現は、既存のマシンコード命令に等しい必要はない。
1.VM(プログラム244)により解釈されようとするPコード
2.Pのテーブル242
3.根本的なプラットフォーム上で実際に実行するコードである、演算子のないVMコード254
4.VMテーブル252(これらのVMテーブルは、演算子のないVMコードに関連付けられる)
register pc = start;
while(true)
do
{
Instruction x = fetch ( pc, memory );
Decode_and_evaluate( x );
pc = add[ pc,1];
// through the use of brackets we try to indicated that the compiler did his work and changed the operation into a table access
}
1.pcの値によりラベル付けされた位置に配置された命令の記憶からのフェッチ
2.命令のデコード及び評価
3.レジスタ(pc)に次の命令を参照させる、レジスタpcに含まれる値のインクリメント
Registers
register x:
register y:
Memory:
...
address start add_instruction
address start+1 jmp_relative_8
...
x = memory[ pc ];
である。
Decode_and_execute (instruction)
{
switch(instruction)
{ ...
case add_instruction: x := add[ x, y ];
...
}
}
Add[ x, y ] == x + y;
である命令を表す。
add( x, y ) == O( add[O-1( x ) , O-1( y )] )
case add_instruction: x := O-1 ( add[O(x), O(y)] );
1.x = memory[ pc ];
2.pc = start;
第1のケース
x = memory[ pc ];
これは、x = memory[ O-1 ( O(pc) ) ];に等しい。
前と同じように、置換は以下のようになるだろう。
x = memory[ O-1 ( PC ) ];
memory[] over O-1を再構成することにより、我々は、x = MEMORY[ ( PC ) ];を得る。ここで、全てのx に関して、MEMORY[x] == memory[O-1(x)]。
Memory:
...
address O(start+1) ...
...
address O(start) add_instruction
...
をもたらす。
jmp_relative(distance) { pc = add[ pc, distance ] }
難読化方式を適用することは、jmp_relative(y) { PC = add[ PC, y ]; }をもたらすだろう。ここで、PCは、難読化されたpcである。
110 第1のコンピュータプログラミング言語において記述される第1のコンピュータプログラム
134 第1のコンピュータプログラミング言語において記述されるコンピュータプログラムをマシン言語にコンパイルするように構成された第1のコンパイラ
142 テーブル
144 テーブル用としての第2のコンピュータプログラムのマシン言語コード
160 入力マシンコード144及びテーブル142として受信する、マシン語を実行するように構成されたコンピュータ
200 コンパイルシステム
210 第1のコンピュータプログラミング言語において記述される第1のコンピュータプログラム
220 バーチャルマシンプログラミング言語を解釈するように構成されたバーチャルマシンコンピュータプログラム(バーチャルマシンコンピュータプログラムは、第2のコンピュータプログラミング言語において記述される)
232 第1のコンピュータプログラミング言語において記述されるコンピュータプログラムをバーチャルマシンプログラム言語にコンパイルするように構成された第1のコンパイラ
234 第2のコンピュータプログラミング言語において記述されるコンピュータプログラムをマシン言語にコンパイルするように構成された第2のコンパイラ
242 テーブル
244 テーブル242用としてのバーチャルマシンプログラム言語コード
252 テーブル
254 テーブル252用としてのバーチャルマシンコンピュータプログラム220のマシン言語コード
260 実行するための入力されたオペランドのないプログラム254として受信する、マシン語、テーブル242、252及びプログラム244を実行するように構成されたコンピュータ
310 メモリ
320 複数の単項テーブル
321−323 単項テーブル
330 複数の2個一組のテーブル
331−333 2個一組のテーブル
3311−3333 単項テーブル
400 コンピュータ
410 コンピュータプロセッサ
420 実行ユニット
422 汎用レジスタ
424 アドレスレジスタ
430 バス
440 メモリ
442 不揮発性メモリ
444 揮発性メモリ
Claims (15)
- 第1のコンピュータプログラミング言語において記述される第1のコンピュータプログラムを第2のコンピュータプログラムにコンパイルするためのコンパイラであって、
当該コンパイラは、テーブル及びマシン言語コードを生成することにより前記第2のコンピュータプログラムを生成するためのコードジェネレータを有し、生成されたテーブル及び生成されたマシン言語コードは、前記第2のコンピュータプログラムを一緒に形成し、生成されたマシン言語コードは、テーブルを参照し、
当該コンパイラは、前記第1のコンピュータプログラムにおける演算又は論理表現を識別するように構成され、前記の表現は、少なくとも1つの変数に依存し、前記コードジェネレータは、前記変数の複数の値のための識別された表現の予め計算された結果を表す1又はそれ以上のテーブルを生成し、予め計算された結果を表す生成された1又はそれ以上のテーブルにアクセスすることにより前記第2のコンピュータプログラムにおいて前記識別された表現を実装するためのマシン言語コードを生成するように構成される、コンパイラ。 - 前記コードジェネレータは、条件文の複数の値のための識別された表現のための1又はそれ以上の予め計算された分岐テーブルを生成し、生成された1又はそれ以上の分岐テーブルにアクセスすることにより前記第2のコンピュータプログラムにおいて前記識別された表現を実装するためのマシン言語コードを生成するように構成される、請求項1に記載のコンパイラ。
- 前記識別された表現を実装するために生成される前記マシン言語コードは、算術又は論理マシン命令を含まない、及び/又は、条件文のマシン命令を含まない、請求項1又は請求項2に記載のコンパイラ。
- 前記表現を実装するための生成されたマシン言語コードは、演算子のないものであり、演算子のないマシン言語コードは、レジスタとメモリとの間のデータを転送するためのロード及びストア演算と、ジャンプ演算とのみを有する、請求項1−3のうちいずれか一項に記載のコンパイラ。
- 前記ロード演算は、定数、メモリアドレスに格納された値及び他のレジスタのうちの1つによりレジスタをロードするためのものであり、
前記メモリアドレスは、1又はそれ以上のレジスタ及び/又は定数により示される、請求項4に記載のコンパイラ。 - 前記ストア演算は、1又はそれ以上のレジスタ及び/又は定数を1又はそれ以上のメモリアドレスにストアするためのものであり、
前記メモリアドレスは、1又はそれ以上のレジスタ及び/又は定数により示される、請求項4又は請求項5に記載のコンパイラ。 - 前記ジャンプ演算は、メモリアドレスへジャンプするためのものであり、
前記メモリアドレスは、1又はそれ以上のレジスタ及び/又は定数により示されるか、又は、メモリアドレスは、更なるメモリアドレスからの取り出される、請求項4−6のうちいずれか一項に記載のコンパイラ。 - 前記マシン言語は、レジスタに作用し、
前記レジスタのサブセットは、メモリアドレスを含めるためのアドレスレジスタを形成する、請求項1−7のうちいずれか一項に記載のコンパイラ。 - 当該コンパイラは、前記第1のコンピュータプログラムにおいて、1又はそれ以上のデータアイテムに作用する表現を識別するように構成され、
前記コードジェネレータは、同じアドレスレジスタのそれぞれのレジスタにおけるデータアイテムの各一つをロードし、前記アドレスレジスタがテーブル入力を示すように前記アドレスレジスタの他のレジスタにおけるデータをロードし、前記データアイテムに作用する演算子の、前記アドレスレジスタにより示された前記メモリアドレスからレジスタへの結果をロードするためのマシン言語コードを生成するように構成される、請求項1−8のうちいずれか一項に記載のコンパイラ。 - 当該コンパイラは、前記第1のコンピュータプログラムにおいて、条件付きのジャンプを識別するように構成され、
前記コードジェネレータは、アドレスレジスタのレジスタにおいて条件文を示す値を保持するレジスタをロードし、前記アドレスレジスタがテーブル入力を示すように前記アドレスレジスタの他のレジスタにおけるデータをロードし、前記アドレスレジスタにより示されたメモリアドレスにある前記メモリにストアされた前記メモリアドレスまでジャンプするためのマシンコードを生成するように構成される、請求項1−9のうちいずれか一項に記載のコンパイラ。 - 請求項1−10のうちいずれか一項に記載のコンパイラを有する、コンピュータ。
- 第1のコンピュータプログラミング言語において記述される第1のコンピュータプログラムを第2のコンピュータプログラムにコンパイルするためのコンパイル方法であって、
テーブル及びマシン言語コードを生成することにより前記第2のコンピュータプログラムを生成するステップであって、生成されたテーブル及び生成されたマシン言語コードは、前記第2のコンピュータプログラムを一緒に形成し、生成されたマシン言語コードは、テーブルを参照する、ステップと、
前記第1のコンピュータプログラムにおける算術又は論理的表現を識別するステップであって、前記表現は、少なくとも1つの変数に依存する、ステップと、
前記変数の複数の値のための識別された表現の予め計算された結果を表す1又はそれ以上のテーブルを生成し、予め計算された結果を表す生成された1又はそれ以上のテーブルにアクセスすることにより前記第2のコンピュータプログラムにおいて前記識別された表現を実装するためにマシン言語コードを生成するステップとを有する、コンパイル方法。 - 前記第1のコンピュータプログラムは、第4のコンピュータプログラムを解釈するためのバーチャルマシンプログラムであり、
当該方法は、
更なるテーブル及び第4のプログラミング言語コードを生成することにより前記第4のコンピュータプログラムを生成することにより、第3のコンピュータプログラミング言語において記述される第3のコンピュータプログラムを第4のコンピュータプログラミング言語において記述される前記第4のコンピュータプログラムにコンパイルするステップであって、前記更なるテーブル及び前記第4のプログラミング言語コードは、前記第4のコンピュータプログラムを一緒に形成し、生成された第4のプログラミング言語コードは、更なるテーブルを参照する、ステップと、
前記第3のコンピュータプログラムにおける算術又は論理的表現を識別するステップであって、前記表現は、少なくとも1つの変数に依存する、ステップと、
前記変数の複数の値のための識別された表現の予め計算された結果を表す1又はそれ以上のテーブルを生成し、予め計算された結果を表す生成された1又はそれ以上のテーブルにアクセスすることにより前記第3のコンピュータプログラムにおいて前記識別された表現を実装するための第4のプログラミング言語コードを生成するステップとを有する、請求項12に記載のコンパイル方法。 - 第1のコンピュータプログラミング言語において記述される第1のコンピュータプログラムを第2のコンピュータプログラムにコンパイルするためのコンパイラにより、第1のコンピュータプログラミング言語において記述される第1のコンピュータプログラムを第2のコンピュータプログラミング言語において記述される第2のコンピュータプログラムにコンパイルすることにより生成される第1のテーブル及び第2のプログラミング言語コードを有し、
前記コンパイラは、テーブル及び第2のプログラミング言語コードを生成することにより前記第2のコンピュータプログラムを生成するためのコードジェネレータを有し、
生成されたテーブル及び生成された第2のプログラミング言語コードは、前記第2のコンピュータプログラムを一緒に形成し、
生成された第2のプログラミング言語コードは、テーブルを参照し、
前記コンパイラは、前記第1のコンピュータプログラムにおける算術又は論理的表現を識別するように構成され、
前記表現は、少なくとも1つの変数に依存し、
前記コードジェネレータは、前記変数の複数の値のための識別された表現の予め計算された結果を表す1又はそれ以上のテーブルを生成し、予め計算された結果を表す生成された1又はそれ以上のテーブルにアクセスすることにより前記第2のコンピュータプログラムにおいて前記識別された表現を実装するための第2のプログラム言語コードを生成するように構成され、
第2のテーブル及びマシン言語コードは、請求項1−10のうちいずれか一項に記載のコンパイラにより前記第2のコンピュータプログラムをマシン言語に翻訳するためにバーチャルマシンプログラムをコンパイルすることにより生成される、コンピュータプログラム。 - コンピュータプログラムがコンピュータ上で実行されたときに請求項12又は請求項13の全てのステップを実行するように適合されたコンピュータプログラムコード手段を有する、コンピュータプログラム。
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 (3)
Publication Number | Publication Date |
---|---|
JP2015537298A true JP2015537298A (ja) | 2015-12-24 |
JP2015537298A5 JP2015537298A5 (ja) | 2016-11-24 |
JP6429785B2 JP6429785B2 (ja) | 2018-11-28 |
Family
ID=47757443
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015540106A Expired - Fee Related JP6429785B2 (ja) | 2012-11-07 | 2013-10-30 | 演算子のないコンパイラ |
Country Status (8)
Country | Link |
---|---|
US (1) | US9921813B2 (ja) |
EP (1) | EP2917833B1 (ja) |
JP (1) | JP6429785B2 (ja) |
CN (1) | CN104823161B (ja) |
BR (1) | BR112015010016A2 (ja) |
MX (1) | MX2015005621A (ja) |
RU (1) | RU2015121749A (ja) |
WO (1) | WO2014072209A1 (ja) |
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 | 北京掌阔移动传媒科技有限公司 | 一种数据通信编码和解码方法 |
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 |
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 |
US10481881B2 (en) | 2017-06-22 | 2019-11-19 | Archeo Futurus, Inc. | Mapping a computer code to wires and gates |
SG11202004146WA (en) * | 2017-11-09 | 2020-06-29 | Nchain Holdings Ltd | System for simplifying executable instructions for optimised verifiable computation |
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 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000047874A (ja) * | 1998-03-20 | 2000-02-18 | Sun Microsyst Inc | プレロ―ドクラスのフットプリント低減装置及び方法 |
JP2000194567A (ja) * | 1998-12-25 | 2000-07-14 | Toshiba Corp | コンパイル装置、コンパイル方法、コンパイルプログラムを格納したコンピュ―タ読み取り可能な記録媒体および目的プログラムを格納したコンピュ―タ読み取り可能な記録媒体 |
WO2007126049A1 (ja) * | 2006-04-28 | 2007-11-08 | Panasonic Corporation | プログラム難読化システム、プログラム難読化装置及びプログラム難読化方法 |
Family Cites Families (11)
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 | 言語処理装置及び方法、並びに情報記憶媒体 |
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 |
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 EP EP13786213.2A patent/EP2917833B1/en not_active Revoked
- 2013-10-30 BR BR112015010016A patent/BR112015010016A2/pt not_active IP Right Cessation
- 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 MX MX2015005621A patent/MX2015005621A/es not_active Application Discontinuation
- 2013-10-30 RU RU2015121749A patent/RU2015121749A/ru unknown
- 2013-10-30 CN CN201380058354.5A patent/CN104823161B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000047874A (ja) * | 1998-03-20 | 2000-02-18 | Sun Microsyst Inc | プレロ―ドクラスのフットプリント低減装置及び方法 |
JP2000194567A (ja) * | 1998-12-25 | 2000-07-14 | Toshiba Corp | コンパイル装置、コンパイル方法、コンパイルプログラムを格納したコンピュ―タ読み取り可能な記録媒体および目的プログラムを格納したコンピュ―タ読み取り可能な記録媒体 |
WO2007126049A1 (ja) * | 2006-04-28 | 2007-11-08 | Panasonic Corporation | プログラム難読化システム、プログラム難読化装置及びプログラム難読化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104823161A (zh) | 2015-08-05 |
CN104823161B (zh) | 2018-10-09 |
JP6429785B2 (ja) | 2018-11-28 |
US20150277865A1 (en) | 2015-10-01 |
EP2917833A1 (en) | 2015-09-16 |
WO2014072209A1 (en) | 2014-05-15 |
US9921813B2 (en) | 2018-03-20 |
RU2015121749A (ru) | 2016-12-27 |
MX2015005621A (es) | 2015-08-20 |
EP2917833B1 (en) | 2018-12-12 |
BR112015010016A2 (pt) | 2017-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6429785B2 (ja) | 演算子のないコンパイラ | |
Simon et al. | What you get is what you C: Controlling side effects in mainstream C compilers | |
Homescu et al. | Profile-guided automated software diversity | |
Borrello et al. | Constantine: Automatic side-channel resistance using efficient control and data flow linearization | |
CN108345773B (zh) | 基于虚拟机的代码保护方法及装置、电子设备、存储介质 | |
JP5643894B2 (ja) | サイドチャネル攻撃および反復起動攻撃に耐える動的可変タイミング演算パスのシステムおよび方法 | |
Gal et al. | Trace-based just-in-time type specialization for dynamic languages | |
US8429637B2 (en) | System and method for conditional expansion obfuscation | |
Van Cleemput et al. | Adaptive compiler strategies for mitigating timing side channel attacks | |
Anckaert et al. | A model for self-modifying code | |
Couroussé et al. | Runtime code polymorphism as a protection against side channel attacks | |
EP2700005A1 (en) | Method and apparatus for generating resource efficient computer program code | |
Agosta et al. | A multiple equivalent execution trace approach to secure cryptographic embedded software | |
US10095847B2 (en) | Method, system and device for protection against reverse engineering and/or tampering with programs | |
CN114416097A (zh) | 应用程序加固方法、系统、设备及存储介质 | |
Wichelmann et al. | MAMBO–V: Dynamic Side-Channel Leakage Analysis on RISC–V | |
Hwang et al. | Identifying Input-Dependent Jumps from Obfuscated Execution using Dynamic Data Flow Graphs | |
CN114003868A (zh) | 一种处理软件代码的方法和电子设备 | |
Simon et al. | The GDSL toolkit: Generating frontends for the analysis of machine code | |
Protsenko et al. | Protecting android apps against reverse engineering by the use of the native code | |
Barbosa et al. | Compiling CAO: from cryptographic specifications to C implementations | |
Cornero et al. | An experimental environment validating the suitability of CLI as an effective deployment format for embedded systems | |
Kranz et al. | Gdsl: A universal toolkit for giving semantics to machine language | |
Abrath et al. | $\Delta $ Δ Breakpad: Diversified Binary Crash Reporting | |
Gu et al. | Constant-Time Wasmtime, for Real This Time: End-to-End Verified Zero-Overhead Constant-Time Programming for the Web and Beyond |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20161005 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20161005 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20170214 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20171030 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20171114 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180208 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180712 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180927 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20181002 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20181030 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6429785 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |