【手続補正書】
【提出日】平成28年10月5日(2016.10.5)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１のコンピュータプログラミング言語において記述される第１のコンピュータプログラムを第２のコンピュータプログラムにコンパイルするためのコンパイラであって、
当該コンパイラは、テーブル及びマシン言語コードを生成することにより前記第２のコンピュータプログラムを生成するためのコードジェネレータを有し、生成されたテーブル及び生成されたマシン言語コードは、前記第２のコンピュータプログラムを一緒に形成し、生成されたマシン言語コードは、テーブルを参照し、
当該コンパイラは、前記第１のコンピュータプログラムにおける演算又は論理表現を識別するように構成され、前記の表現は、少なくとも１つの変数に依存し、前記コードジェネレータは、前記変数の複数の値のための識別された表現の予め計算された結果を表す１又はそれ以上のテーブルを生成し、予め計算された結果を表す生成された１又はそれ以上のテーブルにアクセスすることにより前記第２のコンピュータプログラムにおいて前記識別された表現を実装するためのマシン言語コードを生成するように構成され、
前記識別された表現を実装するために生成される前記マシン言語コードは、算術又は論理マシン命令を含まない、及び／又は、条件文のマシン命令を含まない、コンパイラ。
【請求項２】
前記コードジェネレータは、条件文の複数の値のための識別された表現のための１又はそれ以上の予め計算された分岐テーブルを生成し、生成された１又はそれ以上の分岐テーブルにアクセスすることにより前記第２のコンピュータプログラムにおいて前記識別された表現を実装するためのマシン言語コードを生成するように構成される、請求項１に記載のコンパイラ。
【請求項３】
前記表現を実装するための生成されたマシン言語コードは、演算子のないものであり、演算子のないマシン言語コードは、レジスタとメモリとの間のデータを転送するためのロード及びストア演算と、ジャンプ演算とのみを有する、請求項１又は請求項２に記載のコンパイラ。
【請求項４】
前記ロード演算は、定数、メモリアドレスに格納された値及び他のレジスタのうちの１つによりレジスタをロードするためのものであり、
前記メモリアドレスは、１又はそれ以上のレジスタ及び／又は定数により示される、請求項３に記載のコンパイラ。
【請求項５】
前記ストア演算は、１又はそれ以上のレジスタ及び／又は定数を１又はそれ以上のメモリアドレスにストアするためのものであり、
前記メモリアドレスは、１又はそれ以上のレジスタ及び／又は定数により示される、請求項３又は請求項４に記載のコンパイラ。
【請求項６】
前記ジャンプ演算は、メモリアドレスへジャンプするためのものであり、
前記メモリアドレスは、１又はそれ以上のレジスタ及び／又は定数により示されるか、又は、メモリアドレスは、更なるメモリアドレスからの取り出される、請求項３−５のうちいずれか一項に記載のコンパイラ。
【請求項７】
前記マシン言語は、レジスタに作用し、
前記レジスタのサブセットは、メモリアドレスを含めるためのアドレスレジスタを形成する、請求項１−６のうちいずれか一項に記載のコンパイラ。
【請求項８】
当該コンパイラは、前記第１のコンピュータプログラムにおいて、１又はそれ以上のデータアイテムに作用する表現を識別するように構成され、
前記コードジェネレータは、同じアドレスレジスタのそれぞれのレジスタにおけるデータアイテムの各一つをロードし、前記アドレスレジスタがテーブル入力を示すように前記アドレスレジスタの他のレジスタにおけるデータをロードし、前記データアイテムに作用する演算子の、前記アドレスレジスタにより示された前記メモリアドレスからレジスタへの結果をロードするためのマシン言語コードを生成するように構成される、請求項１−７のうちいずれか一項に記載のコンパイラ。
【請求項９】
当該コンパイラは、前記第１のコンピュータプログラムにおいて、条件付きのジャンプを識別するように構成され、
前記コードジェネレータは、アドレスレジスタのレジスタにおいて条件文を示す値を保持するレジスタをロードし、前記アドレスレジスタがテーブル入力を示すように前記アドレスレジスタの他のレジスタにおけるデータをロードし、前記アドレスレジスタにより示されたメモリアドレスにある前記メモリにストアされた前記メモリアドレスまでジャンプするためのマシンコードを生成するように構成される、請求項１−８のうちいずれか一項に記載のコンパイラ。
【請求項１０】
請求項１−９のうちいずれか一項に記載のコンパイラを有する、コンピュータ。
【請求項１１】
第１のコンピュータプログラミング言語において記述される第１のコンピュータプログラムを第２のコンピュータプログラムにコンパイルするためのコンパイル方法であって、
テーブル及びマシン言語コードを生成することにより前記第２のコンピュータプログラムを生成するステップであって、生成されたテーブル及び生成されたマシン言語コードは、前記第２のコンピュータプログラムを一緒に形成し、生成されたマシン言語コードは、テーブルを参照する、ステップと、
前記第１のコンピュータプログラムにおける算術又は論理的表現を識別するステップであって、前記表現は、少なくとも１つの変数に依存する、ステップと、
前記変数の複数の値のための識別された表現の予め計算された結果を表す１又はそれ以上のテーブルを生成し、予め計算された結果を表す生成された１又はそれ以上のテーブルにアクセスすることにより前記第２のコンピュータプログラムにおいて前記識別された表現を実装するためにマシン言語コードを生成するステップとを有し、
前記識別された表現を実装するために生成される前記マシン言語コードは、算術又は論理マシン命令を含まない、及び／又は、条件文のマシン命令を含まない、コンパイル方法。
【請求項１２】
前記第１のコンピュータプログラムは、第４のコンピュータプログラムを解釈するためのバーチャルマシンプログラムであり、
当該方法は、
更なるテーブル及び第４のプログラミング言語コードを生成することにより前記第４のコンピュータプログラムを生成することにより、第３のコンピュータプログラミング言語において記述される第３のコンピュータプログラムを第４のコンピュータプログラミング言語において記述される前記第４のコンピュータプログラムにコンパイルするステップであって、前記更なるテーブル及び前記第４のプログラミング言語コードは、前記第４のコンピュータプログラムを一緒に形成し、生成された第４のプログラミング言語コードは、更なるテーブルを参照する、ステップと、
前記第３のコンピュータプログラムにおける算術又は論理的表現を識別するステップであって、前記表現は、少なくとも１つの変数に依存する、ステップと、
前記変数の複数の値のための識別された表現の予め計算された結果を表す１又はそれ以上のテーブルを生成し、予め計算された結果を表す生成された１又はそれ以上のテーブルにアクセスすることにより前記第３のコンピュータプログラムにおいて前記識別された表現を実装するための第４のプログラミング言語コードを生成するステップとを有する、請求項１１に記載のコンパイル方法。
【請求項１３】
第１のコンピュータプログラミング言語において記述される第１のコンピュータプログラムを第２のコンピュータプログラムにコンパイルするためのコンパイラにより、第１のコンピュータプログラミング言語において記述される第１のコンピュータプログラムを第２のコンピュータプログラミング言語において記述される第２のコンピュータプログラムにコンパイルすることにより生成される第１のテーブル及び第２のプログラミング言語コードを有するコンピュータプログラムであって、
前記コンパイラは、テーブル及び第２のプログラミング言語コードを生成することにより前記第２のコンピュータプログラムを生成するためのコードジェネレータを有し、
生成されたテーブル及び生成された第２のプログラミング言語コードは、前記第２のコンピュータプログラムを一緒に形成し、
生成された第２のプログラミング言語コードは、テーブルを参照し、
前記コンパイラは、前記第１のコンピュータプログラムにおける算術又は論理的表現を識別するように構成され、
前記表現は、少なくとも１つの変数に依存し、
前記コードジェネレータは、前記変数の複数の値のための識別された表現の予め計算された結果を表す１又はそれ以上のテーブルを生成し、予め計算された結果を表す生成された１又はそれ以上のテーブルにアクセスすることにより前記第２のコンピュータプログラムにおいて前記識別された表現を実装するための第２のプログラム言語コードを生成するように構成され、
当該コンピュータプログラムは、請求項１−１０のうちいずれか一項に記載のコンパイラにより前記第２のコンピュータプログラムをマシン言語に翻訳するためにバーチャルマシンプログラムをコンパイルすることにより生成される第２のテーブル及びマシン言語コードを更に有し、
前記識別された表現を実装するために生成される前記マシン言語コードは、算術又は論理マシン命令を含まない、及び／又は、条件文のマシン命令を含まない、コンピュータプログラム。
【請求項１４】
コンピュータプログラムがコンピュータ上で実行されたときに請求項１１又は請求項１２の全てのステップを実行するように適合されたコンピュータプログラムコード手段を有する、コンピュータプログラム。