JP4741313B2 - プログラム生成装置、プログラム生成方法及びコンパイラ - Google Patents

プログラム生成装置、プログラム生成方法及びコンパイラ Download PDF

Info

Publication number
JP4741313B2
JP4741313B2 JP2005224605A JP2005224605A JP4741313B2 JP 4741313 B2 JP4741313 B2 JP 4741313B2 JP 2005224605 A JP2005224605 A JP 2005224605A JP 2005224605 A JP2005224605 A JP 2005224605A JP 4741313 B2 JP4741313 B2 JP 4741313B2
Authority
JP
Japan
Prior art keywords
data
processing
state
code
definition file
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.)
Expired - Fee Related
Application number
JP2005224605A
Other languages
English (en)
Other versions
JP2007041805A (ja
Inventor
孝芳 藤岡
茂稔 鮫嶋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2005224605A priority Critical patent/JP4741313B2/ja
Publication of JP2007041805A publication Critical patent/JP2007041805A/ja
Application granted granted Critical
Publication of JP4741313B2 publication Critical patent/JP4741313B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)

Description

本発明は、小型のネットワーク装置に搭載されるいわゆるプロトコルスタックのソフトウエアをより小型かつより容易に実装するための技術に関する。
Internet Protocol(IP)等の、電子機器間を有線および無線で接続する方式の規格に準拠したネットワーク装置には、パケットデータを処理するためのソフトウエア群、いわゆるプロトコルスタックが搭載されている。このようなネットワーク装置を、大型計算機及びパーソナルコンピュータだけでなく、AV(Audio Visual)家電機器、白物家電機器、設備機器、センサ、携帯型情報機器、携帯電話等の電子機器にも搭載することが検討されている。
これらの電子機器のうち、小型の電子機器(携帯型情報機器、携帯電話、AV家電機器、センサ等)に搭載されるネットワーク装置には、小型かつ低消費電力であること、白物家電機器、設備機器に搭載されるネットワーク装置には、安価であることが要求される。
ところで、例えば特許文献1には、オブジェクト指向言語処理システムにおいて、生成されるオブジェクトコードのサイズを最小化する技術が記載されている。この技術によれば、クラス宣言の意味解析処理時に、メソッドの所属するクラス名と入力ファイル名との比較が行われ、その結果、両者が一致していればメソッドアドレス格納テーブルの実体および宣言が、両者が一致していなければメソッドアドレス格納テーブルの宣言のみが出力オブジェクトコード内に生成される。これにより、目的のオブジェクトコード内にメソッドアドレス格納テーブルの実体が1つだけ生成されるため、そのサイズを削減することができる。
特開平6−266562号公報
上述の要求に対応するため、上述のような電子機器への搭載が検討されるネットワーク装置には、ネットワーク装置のメモリサイズ及びプロセッサ性能等の制約が課せられる。このような制約が課されるなかで、ネットワーク機器に十分な機能を発揮させるには、それに組み込まれるソフトウエアが、より小さなサイズのメモリ上でより高速に動作可能であることが求められる。
しかし、そのようなソフトウエアを汎用プログラミング言語(例えばC言語)で記述することは困難である。例えば、上記メソッドアドレス格納テーブルの使用により実現される実行時決定機能を利用すると、実行コードを搭載するときにメソッドアドレス格納テーブル及び不要なインスタンスが生成される。このため、実行コードのサイズが大きくなり、上述のような制約のある小型のネットワーク装置では実行が困難である。また、動的に構文解析を行う機構も実行コードを大きくさせる。
そこで、本発明は、よりコンパクトかつより高速に実行可能な、プロトコルスタックのソフトウエアを、より簡単に実装することを目的とする。
本発明は、
複数のデータ要素を含む一連のデータ列をネットワークを介して受け付けるネットワーク装置に前記データ列を処理させるためのプログラムを、記憶手段及び演算手段を有する情報処理装置に生成させるプログラム生成方法であって、
前記記憶手段には、前記ネットワーク装置が受け付けるデータ列内の各データ要素のサイズ情報を含むアイテム情報が、当該データ列内におけるデータ要素の順番にしたがって記述された定義ファイルが格納されており、
当該プログラム生成方法は、
前記演算手段が、前記定義ファイルを参照する処理と、
前記演算手段が、前記プログラムとして、前記データ列の先頭からの順番にしたがって、当該データ列内の各データ要素を、予め定めたサイズのデータずつ処理するためのプログラムを、前記定義ファイル内における前記各データ要素のアイテム情報の記述順番及び前記各データ要素のサイズ情報に基づき生成する処理と、
を含むことを特徴とするプログラム生成方法を提供する。
本発明によれば、よりコンパクトかつより高速に実行可能な、プロトコルスタックのソフトウエアを、より簡単に生成することができる。
以下、添付の図面を参照しながら、本発明に係る実施の形態について説明する。
まず、図1及び図2により、本実施形態に係るプロトコルスタックを生成する情報処理システムの構成について説明する。
本実施の形態に係る情報処理システムは、ユーザからの指示に応じて所定のプログラムを実行可能なハードウエア構成を有している。例えば、図2に示すように、後述のプロトコルスタックコード生成処理を実行するプログラム(プロトコルスタックコンパイラ、汎用コンパイラ、OS等)及びデータ(プロトコルスタックの処理対象となるネットワークメッセージの形式及び構造が所定のフォーマットで記述された、ASCII(American Standard Code for Information Interchang)コード等の符号方法によるテキスト形式の電子化ファイル:以下、プロトコルスタック定義ファイルと呼ぶ)等が格納されるハードディスク等の外部記憶装置201、主記憶装置203、外部記憶装置201等から主記憶装置203上にロードされたプログラムを実行するプロセッサ202、可搬型記憶媒体のデータ読み書きを実行するドライブ204、ユーザからのデータ入力を受け付ける入力装置(キーボード、マウス等)205、ユーザへの提示情報(例えばプログラムの実行状態等)を出力するディスプレイ等の出力装置206、等を有している。
なお、プロトコルスタックコンパイラ及び汎用コンパイラは、ドライブ204を介して可搬型記憶媒体から外部記憶装置201にインストールされたものであってもよいし、情報処理システムがネットワーク接続可能な環境であれば、ネットワークを介して外部記憶装置201にインストールされたものであってもよい。また、プロトコルスタック定義ファイルは、ドライブ204を介して可搬型記憶媒体から外部記憶装置201にコピーされたものであってもよいし、ユーザが、入力装置205を用いて作成し、外部記憶装置201に保存したものであってもよい。
このようなハードウエア構成上における上述のプログラムの実行により、この情報処理システムは、プロトコルスタック定義ファイルからプロトコルスタックを自動生成するための機能構成を実現する。すなわち、図1に示すように、プロトコルスタック定義ファイル101が格納されたデータ記憶部100、プロトコルスタック定義ファイル101に記述されたメッセージデータの形式の解析結果に基づきプロトコルスタックの処理コード(オートマトン及びこれを実行するオートマトン実行プログラム:以下、プロトコルスタックコード)103を生成するプロトコルスタックコンパイラ部102、ネットワーク装置116のプロセッサ115が実行可能な実行コード105をプロトコルスタックコード103から生成する汎用コンパイラ部104が実現される。
このような機能構成により、ネットワーク112上の他の装置(例えばコントロール装置111)との間の送受信メッセージに関する処理をネットワーク装置116に実行させる実行コード105、すなわち、プロトコルスタックのソフトウエアが自動的に生成される。なお、生成された実行コード105は、ネットワーク装置116のプロセッサ115による実行のため、適当な媒体を介してネットワーク装置116上のメモリ114に転送される。
つぎに、図3及び図4により、本情報処理システムにより生成されるプロトコルスタックのソフトウエアにより処理されるメッセージデータ(以下、処理対象メッセージデータ)のデータ構造と、プロトコルスタック定義ファイル101内の記述とについて説明する。ここでは、処理対象メッセージデータの具体例として、ネットワーク装置間でやり取りされるパケット、特に、照明器具を制御及び監視するための3種類のパケット(照明器具を点灯させるためのパケット、照明器具を消灯させるためのパケット、照明機器であるか否かを問合せるためのパケット)を挙げる。
図3に示すように、照明器具を点灯させるためのパケット(点灯指示パケット)301、照明器具を消灯させるためのパケット(消灯指示パケット)302、及び、照明器具であるか否かを問い合わせるためのパケット(問合せパケット)303には、送信元機器のネットワークアドレス(送信元アドレス)が格納される送信元アドレス格納フィールド310、送信先機器のネットワークアドレス(送信先アドレス)が格納される送信先アドレス格納フィールド311、照明機器に与えるためのコマンドが格納されるコマンド格納フィールド312、予約フィールド313、が設けられている。
ここで、送信元アドレス格納フィールド310には、照明機器用のコントロール機器111のネットワークアドレスの一例として「0001」、送信先アドレス格納フィールド311には、照明機器内のネットワーク装置116のネットワークアドレスの一例として「0002」が格納されている。また、コマンド格納フィールド312には、パケットの種類に応じて、照明点灯コマンド「01」、消灯コマンド「02」、及び、問合せコマンド「03」のうちのいずれかのコマンドが格納されている。
さらに、点灯指示パケット301及び消灯指示パケット302には、送信先機器の機器コードが格納される機器コード格納フィールド314が設けられている。ここでは、照明機器に割り当てられた識別子の一例として「0001」が機器コード格納フィールド314に格納されている。
これら3種類のパケット301〜303のデータ形式及びデータ構造を表す記述、すなわちプロトコルスタック定義ファイル101に所定のフォーマットにしたがって記述されたテキストデータを図4に示す。
プロトコルスタック定義ファイル101内の記述データは、処理対象パケットの種類と同数の要素(ここでは3つの要素420,421,422)から構成される。各要素420,421,422には、コメント記号(//)付きメモ書きであるコメント405と、対応メッセージであるパケットの形式的な定義を表すメッセージ定義402と、が含まれている。ここでは、各要素にコメント405が含まれているが、各要素には必ずしもコメント405が含まれている必要はない。なお、以下においては、説明の便宜上、照明点灯パケット301に対応するメッセージ定義を第1メッセージ定義、照明消灯パケット302に対応するメッセージ定義を第2メッセージ定義、問合せパケット303に対応するメッセージ定義を第3メッセージ定義と呼ぶこととする。
各メッセージ定義402には、メッセージクラス名406、対応パケット内の各フィールドに対応するアイテムのリスト404、対応パケットの識別子(メッセージ識別子)407が含まれる。なお、リスト404には対応パケット内の各フィールドに対応するアイテムが、対応パケット内におけるフィールドの順番にしたがって並べられている。
各アイテムには、対応フィールドのデータ格納形式を示す修飾子408、アイテム名409、対応フィールドの占有サイズ410、対応フィールドのデータに対する制約条件411が含まれている。
ここで、修飾子408の具体例としては、フィールドの内容がビッグエンディアン形式で格納されることを示す「bigendian」、フィールドの内容がリトルエンディアン形式で格納されることを示す「littleendian」、フィールドの内容が任意形式で格納されることを示す「any」等が挙げられる。なお、各アイテムにそれぞれ修飾子408を含ませる代わりに、すべてのアイテムの対応フィールドのデータ格納形式を示す修飾子412をメッセージクラス名406の前にしてもよい。
占有サイズ410は、例えば、10進数表記(「2」「100」等)の数値データであってもよいし、16基数指示による16進数表記(「0x」等)の数値データ、メッセージ定義内で用いられている他のアイテム名を用いた指定、及び、これらの組み合わせによって構成される数式であってもよい。
制約条件411の具体例としては、対応フィールド内のデータの値を特定値に制限する条件「=特定の値」、不等号を用いた条件指定、ビットフィールドの制約、これらの要素を組み合わせた数式で表される条件が挙げられる。
なお、プロトコルスタックは、通常、複数のレイヤーから構成されるため、処理対象となるパケットは、複数の入れ子となった要素から構成される。このようなパケットに関するメッセージ定義には、下位レイヤーのパケットのペイロード部分に上位レイヤーのパケットの一部または全部が格納されたことを示すアイテム型を用いてもよい。上位レイヤーのパケットデータの一部または全部を格納するフィールドを指定するため、このようなメッセージ定義には、例えば、上位レイヤーのパケットのデータ形式があるメッセージクラスで記述され、さらに、このメッセージクラス名を伴うアイテムが記述される。
また、ここでは、プロトコルスタックの処理対象メッセージの具体例として、照明機器宛のパケットを挙げたが、プロトコルスタックの処理対象メッセージは、これに限られない。例えば、ホームネットワーク装置(白物家電、AV家電機器等)、ネットワーク装置(パーソナルコンピュータ、携帯電話、ネットワーク制御装置等)、設備系ネットワーク装置(設備機器、監視装置等)等が送受信するパケットも、プロトコルスタックの処理対象メッセージとなり得る。これらのパケットを処理対象メッセージとする場合には、その形式及び構造が、照明機器宛のパケットと同様、所定のフォーマットでプロトコルスタック定義ファイルに記述される。
つぎに、図5により、このようなプロトコルスタック定義ファイル101の記述内容に基づきプロトコルスタックコンパイラ部102が実行するプロトコルスタックコード生成処理について説明する。ここでは、説明の便宜上、プロトコルスタックコード生成処理の流れの概略を説明してから、一部の処理(コード変換処理S603)の詳細について説明することとする。
プロトコルスタックコンパイラ部102は、プロトコルスタック定義ファイル101から各メッセージ定義402を読み込んでメモリ上に配置し(S601)、各メッセージ定義402の構文エラーをチェックする(S602)。
その結果、いずれかのメッセージ定義402に構文エラーが存在していれば、プロトコルスタックコンパイラ部102は、構文エラーの詳細内容を含むエラーメッセージを出力装置206に表示させ(S605)、処理を終了させる。
一方、いずれのメッセージ定義402にも構文エラーが存在していなければ、プロトコルスタックコンパイラ部102は、後述のコード変換処理によって、各メッセージ定義402を汎用言語コードへ変換し(S603)、その変換結果を、プロトコルスタックコード103として電子ファイルに出力する(S604)。これによりプロトコルスタックコードが生成される。
ここで、上述した通り、コード変換処理S603の詳細について説明する。
プロトコルスタックコンパイラ部102は、各メッセージ定義402の記述に基づいて構造木を作成する(S606)。このとき生成される構造木は、メッセージクラス名をルート、各アイテムをノード、メッセージ識別子407をリーフ(終端ノード)とするツリー構造を有する。
例えば、第1メッセージ定義402から生成される構造木は、図6に示すように、メッセージクラス名「LightControlMsg」406から生成されたルート要素701、5つのアイテム「bigendian sourceAddress [2]」「bigendian destAddress [2] =MYSELF」「command [1] =0x01」「any reserved [1]」「bigendian objectCode [2] =0x0a」から生成されたノード702〜706と、属性「関数」の設定値としてメッセージ識別子「lightTurenOn」407を含むリーフ707と、を有している。
各ノード702〜706のtypeは、対応アイテムの修飾子408及び制約条件411の少なくとも一方に基づき定まる。例えば、修飾子「any」を含むアイテムに対応するノードのtypeは「任意要素」となり、制約条件411を含むアイテムに対応するノードのtypeは「制約」となり、制約条件411を含まず、かつ、修飾子「any」も含まないアイテムに対応するノードのtypeは「記録」となる。
ここで、互いに同じメッセージクラス名406を含む複数のメッセージ定義からは、部分木を有する構造木が生成される。例えば、共通のメッセージクラス名406を含む第1〜第3メッセージ定義402(図4参照)からは、図7に示すような構造木が生成される。第1〜第3メッセージ定義402は、共通のメッセージクラス名、共通の制約条件を含む1〜2番目のアイテムを有している。これらのメッセージ定義402から生成される構造木は、図7に示すようにノード803から分岐する。すなわち、第1メッセージ定義402に基づき、図6と同様な構造木(ルート要素801、ノード802〜806及びリーフ807)が生成され、第2及び第3メッセージ定義402の3番目以降のアイテム及びメッセージ識別子に基づき、その構造木のノード803を起点とする2つの部分木(すなわち、第2メッセージ定義402に対応するノード808〜810及びリーフ811、第3メッセージ定義402に対応するノード812〜813及びリール814)が追加される。
このようにして、プロトコルスタック定義ファイル101の記述内容に基づきメッセージクラスごとの構造木を生成すると、プロトコルスタックコンパイラ部102は、プロトコルスタックコンパイラ部102は、後述の最適化サブルーチン(ツリー統合サブルーチン)を呼び出すことによって、この構造木に含まれる共通の部分木を統合する(S607)。なお、この最適化サブルーチンは、オプションにより呼び出しを指定された場合にだけ呼び出されるようにしてもよい。
その後、構造木をステートマシン、各ノードをステート、及び、各リーフを外部関数読み出し処理に変換することによってオートマトンを生成する。図7の構造木から生成されるオートマトンを図8に示す。
図8のオートマトンは、図7の構造木をステートマシン、各ノード801〜806,808〜810,812,813をステート1001〜1015、各リーフ807,812,814の属性「関数」の値で特徴付けられる外部関数の読み出し処理1009,1013,1015に変換することによって生成される。ここで、ノードからステートへの変換は、例えば、以下のルール(1)〜(3)にしたがって行われる。
(1)Type=記録のノード
このノードは、属性「長さ」の値に相当する数だけ繰り返されるステート「C」に変換される。例えば、長さ属性値「2」のノード802は、連続する2つのステート「C」1001,1002に変換される。これらのステート「C」においては、上位レイヤーから受け取った1文字のコードが、RAM上の2バイト分の特定エリアに保存され、さらに次のステートに状態が進められる。ここで、文字コードの保存エリアは、変換元ノードの属性「名称」の値によって特徴付けられ、その保持方法は、変換元ノードの属性「型」の値に応じて定まる。
例えば、処理対象系がbigendianである場合、ノード802から生成された2つのステート「C」1001,1002のうち、1番目のステート1001には、変換元ノード802の名称属性値「sourceAddress」によって特徴付けられるRAMエリア内の上位に、上位エリアからの文字コードを保持させるためのコードが記述され、2番目のステート1002には、同RAMエリア内の下位に上位エリアからの文字コードを保持させるためのコードが記述される。ここでは、変換元ノード802の型属性値が「bigendian」であるため、このような順番でコードが生成されているが、変換元ノード802の型属性値が「littleendian」であれば、これとは逆の順番でコードが生成される。
なお、ここでは、対象処理系がbigendianである場合を例に挙げたが、対象処理系がlittleendianであれば、対象処理系がbigendianである場合とは逆の順番でコードが生成される。bigendian及びlittleendanのいずれの対象処理系にも対応できるように、対象処理系がbigendian及びlittleendanのうちのいずれであるかの指定をオプションで受け付けるようにしてもよい。この場合には、オプション指定の内容に応じた分岐処理が実行されるようにすればよい。
(2)Type=制約のノード
このノードは、属性「長さ」の値に相当する数だけ繰り返されるステート「B」に変換される。例えば、長さ属性値「1」の各ノード804,808,812は、ステート「B」1005に変換される。
これらのステート「B」においては、上位レイヤーから受け取った1文字のコードに応じて次のステートが決定される。例えば、現在の実行ステートがステート1005である場合、上位レイヤーからの文字コードが「01」であればステート1006、上位レイヤーからの文字コードが「02」であればステート1010、上位レイヤーからの文字コードが「03」であればステート1014、それぞれ状態を遷移させる。
また、Type=制約のノードに対応するステート「B」においては、上位レイヤーからの文字コードが、対応ノードの制約条件を満たさなければ(すなわち、対応ノードの属性「値」の値のいずれかにも一致しなければ)、受け取ったパケット全体を不正として処理する必要がある。このため、Type=制約のノードに対応するステート「B」に関しては、上位レイヤーからの文字コードが対応ノードの制約条件を満たさないときに遷移すべき特別なステート「D」1016が用意されている。例えば、Type=制約のノード805,809,813に対応するステート「B」1005には、上位レイヤーからの文字コードが各対応ノード805,809,813の値属性値「01」「02」「03」のいずれにも該当しないときに、なにも処理が行われないステート「D」1016に遷移するようなコードが記述される。
なお、このようなステート「D」は、すべてのメッセージクラスにおいて生成される。
(3)Type=任意要素のノード
このノードは、属性「長さ」の値に相当する数だけ繰り返されるステート「A」に変換される。例えば、長さ属性値「1」のノード805,809,813は、それぞれ、1つのステート「A」1001,1010,1014に変換される。これらのステート「A」では、たんに、次ステートに状態を移す処理が行われる。例えば、現在の実行ステートがステート1001である場合には、次ステート1002に状態が遷移するだけである。
さらに、プロトコルスタックコンパイラ部102は、このようにして生成したオートマトンを実行する汎用記述言語形式のプログラム(オートマトン実行プログラム)を生成する(S608)。これによりメッセージクラスごとに共通に生成されるオートマトン実行プログラムのフローチャートを図9に示す。
そして、最終的に、プロトコルスタックコンパイラ部102は、後述の最適化サブルーチン(コード統合サブルーチン、RANエリア最適化サブルーチン)を呼び出すことによって、生成したプロトコルスタックコードを最適化する(S609)。なお、最適化サブルーチンは、オプションにより呼び出しを指定された場合にだけ呼び出されるようにしてもよい。
さて、以上の処理によって生成されるオートマトン実行プログラムによって、オートマトンは、以下のように実行される(図9参照)。
まず、RAM上の1バイト分の所定領域(実行ステート位置情報格納エリア)に、オートマトンの現在の実行ステートを表す実行ステート位置情報として、オートマトンの最初のステート1001の位置情報が設定され(S901)、その後、パケット内の一定サイズのデータが上位レイヤーから取得される(S902)。なお、上位ステートから取得されるデータのサイズは任意であるが、ここでは、1文字のコード(すなわち2バイトのデータ)が取得されることとする。
その後、取得したデータに基づき、実行ステート位置情報が示す位置のステートのコードが実行される。
例えば、このとき実行ステート位置情報がステート「B」の位置を示していれば、上位レイヤーから取得した文字コードに応じて定まるステートの位置情報で実行ステート位置情報が更新される。例えば、現在の実行ステートがステート「B」1003である場合、文字コードが「00」であれば、次ステート「B」1004の位置情報で実行ステート位置情報が更新され、文字コードがその他の値であれば、ステート「D」1016の位置情報で実行ステート位置情報が更新される。また、現在の実行ステートがステート「B」1005である場合、文字コードが「01」であれば次ステート「A」1006の位置情報で、文字コードが「02」であれば次ステート「A」1010の位置情報で、文字コードが「03」であれば次ステート「A」1014の位置情報で、文字コードがそれら以外の値であれば、ステート「D」1016の位置情報で実行ステート位置情報が更新される。
また、実行ステート位置情報がステート「A」の位置を示していれば、現在の実行ステートの次ステートの位置情報で実行ステート位置情報が更新される。例えば、現在の実行ステートがステート「A」1006である場合、次ステート1007の位置情報で実行ステート位置情報が更新される。
また、実行ステート位置情報がステート「C」の位置を示していれば、RAM上の特定エリアに文字コードが保存され、さらに、現在の実行ステートの次ステートの位置情報で実行ステート位置情報が更新される。例えば、現在の実行ステートがステート1001である場合には、「sourceAddress」で特徴付けられるRAMエリアの1バイト目に文字コードが保存され、次ステート1002の位置情報で実行ステート位置情報が変更される。また、現在の実行ステートがステート1002である場合には、「sourceAddress」で特徴付けられるRAMエリアの2バイト目に文字コードが保存され、次ステート1003の位置情報で実行ステート位置情報が変更される。
また、実行ステート位置情報が外部関数の呼び出し処理の位置を示していれば、その外部関数が呼び出される。例えば、現在の実行ステートが処理1009,1013,1015のいずれかを示している場合には、対応アイテムの属性「関数」の値に対応する名称の外部関数(lightTurnOn, lightTurnOff, lightModeRequest)が呼び出される。
このようにしてステートのコードが実行されると、更新後の実行ステート位置情報が示す位置のステートに状態が遷移し(S903)、S902で取得したデータがパケット内の最後の文字のコードであるか否かがチェックされる(S904)。その結果、最後の文字のコードでなければ、S902以降の処理が繰り返し実行され、最後の文字のコードであれば、処理が終了する。
なお、その後、このようにして生成されたプロトコルスタックコード103は、汎用コンパイラ部104によって最適化等され、実行コード105へと変換される。
このようなオートマトン及びオートマトン実行プログラムによれば、例えば、ネットワーク装置116が消灯指示パケット302を受け付けた場合には、S902〜S904の繰り返し実行によって、ステート1001→ステート1002→ステート1003→ステート1004→ステート1005→ステート1010→ステート1011→ステート1012→処理1013、というように状態が順次遷移する。これにより、最終的に、「lightTurnOn」で特徴付けられる外部関数が呼び出され、その結果、照明機器が点灯する。この関数「lightTurnOn」は、照明消灯パケット302の送信元の確認及び応答を行うために、照明消灯パケット302の送信元アドレス格納フィールドの格納値、すなわちパケット送信元のネットワークアドレスを利用する必要がある。その値は、S902〜S904の繰り返し実行により、sourceAddressで特徴付けられるRAMエリアに書き込まれるため、この関数によって利用可能である。
また、受信パケットの送信先アドレス格納フィールド311に、ネットワーク装置116のネットワークアドレス「0002」以外のネットワークアドレス「0103」が格納されている場合には、実行ステートが、1001→1002→1003→1016→1016→1016→1016→1016と変化するため、このパケットに応じた処理(照明機器に対する操作処理)は実行されない。
このように、本実施の形態に係る情報処理システムが生成するオートマトン及びオートマトン実行プログラムによれば、パケットの格納情報が正しく判断されるため、パケットを処理することができる。
通常のネットワーク装置のパケット受信処理においては、受信パケット全体を、RAMにコピーしてから処理するため、例えば、上述の3種類のパケット301〜303の処理には、少なくとも8バイトのメモリ領域を要する。また、受信パケット全体をRAMにコピーしてから処理を開始しているため、その分、処理に時間を要する。
これに対して、本実施の形態に係るプロトコルスタックコード生成処理により自動生成されるオートマトン及びオートマトン実行プログラムによれば、RAM上に3バイト分のエリア(ノードの名称属性値で特徴付けられる2バイト分のRAMエリア、及び、1バイト分の実行ステート位置情報格納エリア)が確保されれば足りる。また、パケットの受信を開始すると、予め定めたサイズのデータを受信するごとに、そのデータを解析するため、受信パケット全体をいったんメモリに格納してから解析を開始する場合と比較して処理を早期に終了させることができる。
このため、RAMエリアを節約し、かつ、プログラムの高速化を図ることができる。すなわち、本実施の形態によれば、より小型のプロトコルスタックのソフトウエア、つまり、ネットワークシステム上の小型ネットワーク装置への搭載に適した、省メモリかつ高速なプロトコルスタックをより容易に実装することをできる。
また、プロトコルスタック定義ファイル101には、同一のメッセージクラスに属する複数のメッセージ定義から、適宜、必要なメッセージ定義(ネットワーク装置が処理すべきメッセージに関するメッセージ定義)だけを選択して記述することができるため、ネットワーク装置がサポートすべきパケットだけをサポートする必要最小限のコードを生成することができる。すなわち、ネットワーク装置が処理する必要がないメッセージに関するメッセージ定義を排除することができるため、最終的なコードサイズを縮小させることができる。
例えば、上述の3種類のパケット301〜303のうち、ネットワーク装置の処理対象パケットが2種類のパケット(例えば301,302)だけである場合、プロトコルスタック定義ファイル101には、図4に示した3つの要素420〜422のうち、処理対象パケット301,302に対応する2つの要素420,421だけを記述すれば足りる。その結果、2つの要素420,421に含まれるメッセージ定義のみからプロトコルスタックコード103が生成される。このため、プロトコルスタックコード103のサイズが小さくなり、結果として、このプロトコルスタックコード103から生成される実行コード105のサイズも小さくなる。
なお、プロトコルスタックの処理対象としてパケットを挙げたが、プロセッサで連続的に処理可能な一連のデータ列であれば、パケット以外のデータ(XML形式のテキストデータ等の上位通信データ形式データ、表形式データ等)であってもプロトコルスタックの処理対象となり得る。このような、パケットデータ以外のデータを処理対象とするプログラムも、以上と同様な処理によって自動生成することができる。
また、以上においては、プロトコルスタックコンパイラ部102が、汎用コンパイラ部104によって実行コードにコンパイルされるオートマトン及びオートマトン実行プログラムをプロトコルスタック定義ファイル101から生成しているが、プロトコルスタックコンパイラ部102が、特定のネットワーク装置上で動作する機械語形式またはバイナリ形式のコード(すなわち実行コード105)をプロトコルスタック定義ファイル101から直接生成するようにしてもよい。または、ネットワーク装置において逐次的に解釈実行される中間的な実行コードを生成してもよい。
また、以上においては、すべてのパケットに関するメッセージ定義からソースコードを生成しているが、必ずしも、このようにする必要はない。例えば、一部のパケットに関するメッセージ定義から構造木を生成してから、残りのパケットに関するメッセージ定義についても同様の処理を行い、最終的に、内部的に生成された構造木をグラフ結合(マージ)してもよい。なお、生成された部分的な木構造を保存可能な形式で外部記憶メモリに保存しておき、最終的なソースコードの生成時に、それらを外部記憶メモリから呼び出すようにすれば、処理の高速化を図ることができる。
つぎに、S609において呼び出される最適化サブルーチンについて説明する。なお、各最適化サブルーチンは、前述したように、オプションによってその呼び出しの有無が指定されてもよい。
(1)ツリー統合サブルーチン
S607においてツリー統合サブルーチンが呼び出されると、以下に示すように、図10のツリー統合処理によって、同一の部分木が統合される。
すべてのツリーの各ノードを順次第1処理対象ノードaとして、以下の処理を繰り返し実行する(S1101)。すなわち、すべてのツリーの各ノードについて、それぞれ、以下の処理を実行する。
すべてのツリーの各ノードを順次第2処理対象ノードbとして、以下の処理を繰り返し実行する(S1102)。すなわち、新たなノードを第1処理対象ノードaとするごとに、それぞれ、すべてのツリーの各ノードをそれぞれ第2処理対象ノードbとして以下の処理を実行する。
第2処理対象ノードbと第1処理対象ノードの順序を比較する(S1103)。その結果、第1処理対象ノードaの順序が第2処理対象ノードbの順序よりも早くなければ、次ノードを第2処理対象ノードbとしてS1103を実行する。一方、第1処理対象ノードaの順序が第2処理対象ノードbの順序よりも早ければ、第1処理対象ノードaの次ノードを順次第3処理対象ノードanとして、以下の処理を繰り返し実行する(S1104)。すなわち、第1処理対象ノードaのすべての次ノードについて、それぞれ、以下の処理を実行する。
第2処理対象ノードbの次ノードを順次第4処理対象ノードbnとして、以下の処理を繰り返し実行する(S1105)。すなわち、新たなノードが第4処理対象ノードbnとなるごとに、第2処理対象ノードbのすべての次ノードについて、それぞれ、以下の処理を実行する。
第3処理対象ノードanを起点とするサブツリーと第4処理対象ノードbnを起点とするサブツリーを比較する。その結果、両者が一致していれば、第1処理対象ノードaが次ノードanを指す部分を第4処理対象ノードbnに変更し(S1107)、第2処理対象ノードbの次ノードのうちの他のノードを第4処理対象ノードbnとして再度S1106を実行する。一方、両者が一致していなければ、第2処理対象ノードbの次ノードのうちの他のノードを第4処理対象ノードbnとして再度S1106を実行する。
このような処理によりすべての同一の部分木が同一化されたら、参照されていないノードを廃棄する(S1109)。
このような処理によれば、同一の部分木が統合されるため、ノード数が減少し、その結果、生成されるオートマトンのステート数を減少させることができる。このため、最終的な出力コード量が減少させることができる。
(2)コード統合サブルーチン
S609においてコード統合サブルーチンが呼び出されると、以下に示すように、図12のコード統合処理によって、ステート間に存在する、RAMメモリ操作処理を実行させるための同一のコードが統合される。ここでは、図8のオートマトンに基づきコードを生成する場合を例に挙げる。ここでは、説明の便宜上、ステート1001の位置を番号「1」、ステート1002のステート位置を番号「2」、ステート1003の位置を番号「3」、実行ステート位置情報格納エリアの識別子を「state」、上位レイヤーから受け取った一文字の識別子を「c」と表す。
ステート1001において、名称sourceAddressで特徴付けられるRAMエリアの第1バイト目に上位レイヤーからの一文字を格納し、さらに実行ステート位置情報を次ステートの番号「2」に変更するコードは、例えば、図11に示した3種類のコードA「sourceAddress[0]←c」1301,「sourceAddress[state−1]←c」1302,「sourceAddress[1−state]←c」1303のいずれかと、2種類のコードB「state←state+1」1304,「state←2」1305のいずれかと組み合わせから構成される。
また、ステート1002において、名称sourceAddressで特徴付けられるRAMエリアの第2バイト目に上位レイヤーからの一文字を格納し、実行ステート位置情報を次ステートの番号「3」に変更するコードは、例えば、図11に示す3種類のコードA「sourceAddress[1]←c」1311,「sourceAddress[state−1]←c」1312,「sourceAddress[3−state]←c」1313のいずれかと、2種類のコードB「state←state+1」1314,「state←3」1315のいずれかとの組み合わせにより構成される。
そこで、2つのステート1001,1002のコードを、共通の組合せコード「sourceAddress[state−1]←c、state←state+1」(コード1302,1304の組み合わせ、コード1312,1314の組み合わせ)とすれば、2つのステート1001,1002のコードを統合することができるため、コードサイズを減少させることができる。
このようなコードの統合を図るには、プロトコルスタックコンパイラ部102は、図12に示す以下の処理を実行する。まず、プロトコルスタックコンパイラ部102は、全ツリーのすべてのノードについて、それぞれ、割り当て可能なコード断片をすべて生成する(S1401)。例えば、ステート1001におけるコード断片として、6種類の組合せコード、すなわち、「sourceAddress[0]←c、state←state+1」(コード1301,1304の組合せ)、「sourceAddress[state-1]←c、state←state+1」(コード1302,1304の組合せ)、「sourceAddress[1-state]←c、state←state+1」(コード1303,1304の組合せ)、「sourceAddress[0]←c、state←2」(コード1301,1305の組合せ)、「sourceAddress[state-1]←c、state←2」(コード1302,1305の組合せ)、「sourceAddress[1-state]←c、state←2」(コード1303,1305の組合せ)が生成される。また、ステート1002におけるコード断片として、6種類の組合せコード、すなわち、「sourceAddress[1]←c、state←state+1」(コード1311,1314の組合せ)、「sourceAddress[state-1]←c、state←state+1」(コード1312,1314の組合せ)、「sourceAddress[3-state]←c、state←state+1」(コード1313,1314の組合せ)、「sourceAddress[1]←c、state←3」(コード1311,1315の組合せ)、「sourceAddress[state-1]←c、state←3」(コード1312,1315の組合せ)、「sourceAddress[3-state]←c、state←3」(コード1313,1315の組合せ)が生成される。
プロトコルスタックコンパイラ部102は、このとき生成した各コード断片のコストをそれぞれ算出する(S1402)。ここで算出されるコストは、例えば、生成したコードの文字列の長さ、生成したコードをコンパイルしたときのバイナリのサイズ、生成したコードの演算回数の見積もり量等であってもよい。
さらに、プロトコルスタックコンパイラ部102は、生成した全コード断片のうち、重複しているコード断片の数をカウントする(S1403)。例えば、ステート1001について生成されたコード断片「sourceAddress[state-1]←c、state←state+1」は、ステート1002について生成されたコード断片群にも含まれているから、その重複数は2である。そして、プロトコルスタックコンパイラ部102は、すべてのツリーの各ノードについて、それぞれ、生成したコード断片群のなかから、コスト値を重複数で割った値が最小となるコード断片を選択し、このコード断片を、そのノードに割り当てられるコード断片とする(S1404)。
このような処理によれば、よりコストの小さいコードを優先的に割り当てられるとともに、重複するコードの統合が図られる。
(3)RAMエリア最適化ルーチン
例えば、ノードAからノードB及びノードCへ分岐するツリーが生成された場合、ノードB及びその子ノードから生成されるコードが利用するRAMエリアDと、ノードC及びその子ノードから生成されるコードが利用するRAMエリアEとが同時に使用されることはない。これらのRAMエリアD,Eを共通化すれば、実行コードのRAMサイズを減少させることができる。このように、いくつかのノードから生成されるコードがRAMエリアを使用する場合には、RAMエリアの最適化により、より高性能で省メモリなプロトコルスタックを生成することができる。以下、この処理について説明する。
S609においてRAMエリア最適化ルーチンが呼び出されると、図13のRAMエリア共通化処理によって、同時使用されないRAMエリアが統合される。ここでは、以下の定義を用い、対象とするクラスを、Cに対してS←V(C)とする。
V(C)={v1,v2...}:クラスCで使用されるRAMエリアの識別情報の集合
D(C)={d1,d2,... ,dm}:クラスCのメッセージ定義の集合
M(d)={vi,vj,vk,...}:メッセージ定義dで使用されるRAMエリアの識別情報の集合
まず、プロトコルスタックコンパイラ部102は、集合Sが空集合φであるかどうかチェックし(S1501)、その結果、空集合φであれば処理を終了させる。一方、空集合φでなければ、以下の数式を満たすメッセージ定義dを探す(S1502)。
(M(d)∩S)∩(M(d')∩S)=φ, ∀d'≠d かつ
S∩M(d)≠φ かつ
S−M(d)S≠φ
その結果、該当するメッセージ定義dが存在していれば (S1503)、プロトコルスタックコンパイラ部102は、Sを、S1←S∩M(d)とS2←S−M(d)とに分割し、それらS1及びS2をそれぞれSとみなして、このアルゴリズムを再帰的に呼び出す。この再帰的処理が終了したら、これにより得られたS1及びS2を、RAMエリアを共有する要素として出力する(S1504)。例えば、S1及びS2について、それぞれ、上記条件を満たすメッセージ定義dが存在していれば、S1、S2、S1をSとした再帰的処理により得られるS1及びS2、S2をSとした再帰的処理により得られるS1及びS2の合計4つが、RAMエリアを共有する要素となる。もちろん、RAMエリアを共有する要素ととして最終的に得られる要素は、4つより小さくなることも、4つより大きくなることもある。
一方、該当するメッセージ定義dが存在しなければ(S1503)、プロトコルスタックコンパイラ部102は、クラスCで使用される全RAMエリアの識別情報v∈Sに対して、以下の数式を満たすすべてのrの集合I(v)を求める(S1505)。
∀d∈D(C), r∈M(d) xor v∈M(d)
その後、プロトコルスタックコンパイラ部102は、集合S1←(vi,vj,...)と集合S2←(I(vi)∩I(vj)∩...)の共有RAMエリアのサイズが最小になるように、S1及びS2に属する要素の組み合わせを選択する。S1、S2、S−S1−S2をそれぞれSとみなして、このアルゴリズムを再帰的に呼び出し、それが終了すると、S1及びS2を、RAMエリアを共有する要素として出力する(S1506)。例えば、S−S1−S2が空集合φとなり、かつ、S1及びS2の同サイズである場合には、S1及びS2の共通化により、必要なRAMエリアのサイズが当初の半分となる。
以上説明した最適化サブルーチン(ツリー統合サブルーチン、コード統合サブルーチン、RANエリア最適化サブルーチン)のうち、読み出すべきサブルーチンの組み合わせを変えることによって(例えば、すべてのサブルーチンを呼び出す、1つのサブルーチンだけを呼び出す等)、複数のプロトコルスタックコードを選択候補として得て、それらの選択候補のなかから、目的に適合する選択候補(例えば、処理性能、メモリの使用量等の実行コストが最小のもの)を最終プロトコルスタックコードとして選択するようにしてみよい。これにより、例えば小型のネットワーク装置への搭載に適した、より高性能で、メモリ使用量の小さなプロトコルスタックを生成することができる。
なお、以上においては、ネットワーク装置に組み込まれるプロトコルスタックコードを情報処理システム上で生成しているが、必ずしも、このようにする必要はない。例えば、プロトコルスタックコードの自動生成処理の実行機能をネットワーク装置に持たせ、そのネットワーク装置が、自身の処理する各種パケットに関するプロトコルスタック定義ファイルの記述内容からプロトコルスタックコードを生成するようにしてもよい。
さらに、さまざまな仮想的な生成結果のなかから、実行コスト(処理性能、必要メモリサイズ等)が最小のものを選択し、それを、プロトコルスタックコードとして出力する。その後、汎用コンパイラ部104は、このプロトコルスタックコードから、ネットワーク装置116上で実行可能な実行コード105を生成する。
本発明の実施形態に係る情報処理システムの機能構成を説明するための図である。 本発明の実施形態に係る情報処理システムの概略ハードウエア構成図ある。 プロトコルスタックの処理対象となるメッセージデータの構造例を説明するための図である。 本発明の実施の形態に係るプロトコルスタック定義ファイルの記述データを説明するための図である。 本発明の実施の形態に係るプロトコルスタックコンパイラが実行するプロトコルスタックコード生成処理のフローチャートである。 1つのメッセージ定義から生成された構造木を示した図である。 同じメッセージクラス名を有する複数のメッセージ定義から生成された構造木を示した図である。 図7の構造木から生成されたオートマトンを示した図である。 図8のオートマトンを実行するオートマトン実行プログラムの処理のフローチャートである。 本発明の実施の形態に係る最適化処理(ツリー統合処理)のフローチャートである。 生成されるコードの例である。 本発明の実施の形態に係る最適化処理(コード統合処理)のフローチャートである。 本発明の実施の形態に係る最適化処理(RAMエリア共通化処理)のフローチャートである。
符号の説明
101:プロトコルスタック定義ファイル、102:プロトコルスタックコンパイラ部、103:プロトコルスタックコード、104:汎用コンパイラ部、105:実行コード

Claims (3)

  1. 複数のデータ要素を含む一連のデータ列をネットワークを介して受け付けるネットワーク装置に前記データ列を処理させるためのデータ列処理プログラムを、記憶手段及び演算手段を有する情報処理装置に生成させるプログラム生成方法であって、
    前記記憶手段には、前記ネットワーク装置が受け付けるデータ列内の各データ要素のサイズ情報を含むアイテム情報が、当該データ列内におけるデータ要素の順番にしたがって記述された定義ファイルが格納されており、
    当該プログラム生成方法は、
    前記演算手段が、前記定義ファイルを参照する第1の処理と、
    前記演算手段が、前記データ列処理プログラムとして、前記データ列の先頭からの順番にしたがって、当該データ列内の各データ要素を、予め定めたサイズのデータずつ処理するためのプログラムを、前記定義ファイル内における前記各データ要素のアイテム情報の記述順番及び前記各データ要素のサイズ情報に基づき生成する第2の処理と、を含み、
    前記第2の処理では、
    前記定義ファイル内における前記各データ要素のアイテム情報の記述に基づき、処理順序を定義する構造木を生成し、
    前記構造木に含まれる1つのノードから分岐したそれぞれのノード群での処理において、利用するRAMエリアを共通化する、
    ことを特徴とするプログラム生成方法。
  2. 複数のデータ要素を含む一連のデータ列をネットワークを介して受け付けるネットワーク装置に前記データ列を処理させるためのデータ列処理プログラムを生成するプログラム生成装置であって、
    前記ネットワーク装置が受け付けるデータ列内の各データ要素のサイズ情報を含むアイテム情報が、当該データ列内におけるデータ要素の順番にしたがって記述された定義ファイルが格納された記憶手段と、
    前記データ列処理プログラムとして、前記データ列の先頭からの順番にしたがって、当該データ列内の各データ要素を、予め定めたサイズのデータずつ処理するためのプログラムを、前記定義ファイル内における前記各データ要素のアイテム情報の記述順番及び前記各データ要素のサイズ情報に基づき生成する演算手段と、を備え、
    前記演算手段は、
    前記定義ファイル内における前記各データ要素のアイテム情報の記述に基づき、処理順序を定義する構造木を生成し、
    前記構造木に含まれる1つのノードから分岐したそれぞれのノード群での処理において、利用するRAMエリアを共通化する、
    ことを特徴とするプログラム生成装置。
  3. 複数のデータ要素を含む一連のデータ列をネットワークを介して受け付けるネットワーク装置に前記データ列を処理させるためのデータ列処理プログラムの生成処理を、記憶手段及び演算手段を有する情報処理装置に実行させるコンパイラであって、
    前記記憶手段には、前記ネットワーク装置が受け付けるデータ列内の各データ要素のサイズ情報を含むアイテム情報が、当該データ列内におけるデータ要素の順番にしたがって記述された定義ファイルが格納されており、
    当該コンパイラは、
    前記演算手段が、前記定義ファイルを参照する第1の処理と、
    前記演算手段が、前記データ列処理プログラムとして、前記データ列の先頭からの順番にしたがって、当該データ列内の各データ要素を、予め定めたサイズのデータずつ処理するためのプログラムを、前記定義ファイル内における前記各データ要素のアイテム情報の記述順番及び前記各データ要素のサイズ情報に基づき生成する第2の処理と、を前記情報処理装置に実行させ、
    前記第2の処理では、
    前記定義ファイル内における前記各データ要素のアイテム情報の記述に基づき、処理順序を定義する構造木を生成し、
    前記構造木に含まれる1つのノードから分岐したそれぞれのノード群での処理において、利用するRAMエリアを共通化する、
    ことを特徴とするコンパイラ。
JP2005224605A 2005-08-02 2005-08-02 プログラム生成装置、プログラム生成方法及びコンパイラ Expired - Fee Related JP4741313B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005224605A JP4741313B2 (ja) 2005-08-02 2005-08-02 プログラム生成装置、プログラム生成方法及びコンパイラ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005224605A JP4741313B2 (ja) 2005-08-02 2005-08-02 プログラム生成装置、プログラム生成方法及びコンパイラ

Publications (2)

Publication Number Publication Date
JP2007041805A JP2007041805A (ja) 2007-02-15
JP4741313B2 true JP4741313B2 (ja) 2011-08-03

Family

ID=37799731

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005224605A Expired - Fee Related JP4741313B2 (ja) 2005-08-02 2005-08-02 プログラム生成装置、プログラム生成方法及びコンパイラ

Country Status (1)

Country Link
JP (1) JP4741313B2 (ja)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0773044A (ja) * 1993-09-02 1995-03-17 Mitsubishi Electric Corp 最適化コンパイル方法及び最適化コンパイル装置
JPH07168772A (ja) * 1993-12-15 1995-07-04 Oki Electric Ind Co Ltd 抽象構文記法メッセージの符号化・復号化処理方法
JPH07271568A (ja) * 1994-03-31 1995-10-20 Toshiba Corp プログラム生成装置
JPH09179729A (ja) * 1995-12-22 1997-07-11 Mitsubishi Electric Corp 通信プログラム自動生成装置及びトランザクション通信装置並びにトランザクション通信方法
JP2996296B2 (ja) * 1997-02-26 1999-12-27 日本電気株式会社 メッセージ復号化装置及び有限状態機械生成装置
JP3092563B2 (ja) * 1997-10-27 2000-09-25 日本電気株式会社 状態遷移図変換装置
JP2005128888A (ja) * 2003-10-24 2005-05-19 Hitachi Ltd コマンド処理装置及びコマンド処理装置の制御方法

Also Published As

Publication number Publication date
JP2007041805A (ja) 2007-02-15

Similar Documents

Publication Publication Date Title
US9298437B2 (en) Unrolling quantifications to control in-degree and/or out-degree of automaton
US6754884B1 (en) Programming language extensions for processing XML objects and related applications
JP4615827B2 (ja) 文書の構造化された記述を圧縮するための方法
US6836890B1 (en) Methods and systems for message translation and parsing of data structures in a distributed component architecture
JP3272014B2 (ja) 階層構造データ処理情報を含むデータ処理辞書を作成する方法及び装置
US20070079299A1 (en) Method, apparatus and program storage device for representing eclipse modeling framework (EMF) ecore models in textual form
JP2006252557A (ja) コンピュータ・プログラム・コードの開発オブジェクトの管理方法および開発オブジェクトの管理システム
JP2006085740A (ja) アプリケ―ションソフトウェア構成方法
JP2005018777A (ja) 共通問い合わせ実行時システムおよびアプリケーションプログラミングインターフェイス
US20070271553A1 (en) Method and system for translating assembler code to a target language
US20050192929A1 (en) Generation and conversion of object that provide for efficient object modification
KR100500245B1 (ko) 객체 지향 프로그램이 기록된 저장 매체
JP4741313B2 (ja) プログラム生成装置、プログラム生成方法及びコンパイラ
US7051279B2 (en) Method and system for providing multiple levels of help information for a computer program
JP2008226010A (ja) コンパイル方法及びコンパイル装置
CN105793842B (zh) 序列化消息之间的转换方法和装置
CN116028062A (zh) 目标代码的生成方法、npu指令的显示方法及装置
US20060253833A1 (en) System and method for efficient hosting of wireless applications by encoding application component definitions
US7941452B2 (en) Apparatus and method for efficient encoding of application definition using contiguous arrays
CN115167860A (zh) 将程序码于不同程序语言间进行转换及优化的方法
CA2543881C (en) Method and system for efficient encoding of application definition using contiguous arrays
JP2001005655A (ja) アプリケーションジェネレータ開発支援装置及びアプリケーションジェネレータ開発支援方法
CN117827217A (zh) 一种c语言结构体与json相互转换的方法及装置
JP2011165160A (ja) 文書処理装置
CN116149629A (zh) 编辑代码的方法和装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070808

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100412

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100921

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101115

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: 20110426

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110506

R151 Written notification of patent or utility model registration

Ref document number: 4741313

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140513

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140513

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees