"CPUとローカルメモリをそれぞれが有する複数個のCPUコアの内の一のCPUコアのCPUが他のCPUコア内のローカルメモリを参照するためのグローバルアドレスと、CPUが自らのCPUコア内のローカルメモリを参照するためのローカルアドレスと、を用いるマルチCPUコアシステムによって実行されるプログラムのロードモジュールをコンピュータのデータ処理によって生成するロードモジュール生成方法であって、あるデータをどのCPUコア内のローカルメモリ上に配置するか、及び、ある関数がどのCPUで実行されるかを指定した指示情報を有するソースプログラムを入力し、入力した情報に基づいて、関数毎にその変数の参照にグローバルアドレスを使うか、ローカルアドレスを使うかを判定し、その判定結果に応じてローカルアドレス用シンボル及びグローバルアドレス用シンボルの内の少なくとも一つを参照するオブジェクトコードを生成するコンパイル処理と、前記オブジェクトコードに対してグローバルアドレス用シンボルにはグローバルアドレスを割り当て、ローカルアドレス用シンボルにはローカルアドレスを割り当てて、複数のCPUコアに共通なロードモジュールを生成するリンク処理と、を含むロードモジュール生成方法。前記コンパイル処理において、単一のCPUでのみ実行される関数においてそのCPUコア内のローカルメモリ上の変数を参照する場合はローカルアドレス用シンボルを参照するコードを生成し、複数のCPUで実行される関数の場合にはその変数を参照するためにグローバルアドレス用シンボルを参照するコードを生成する、請求項1記載のロードモジュール生成方法。前記コンパイル処理において、単一のCPUでのみ実行される関数においてそのCPUコア内のローカルメモリ上の変数を参照する場合はローカルアドレス用シンボルを参照する第1のコードを生成し、複数のCPUで実行される可能性のある関数の場合には関数を実行するCPUと参照する変数の所在に応じてローカルアドレス用シンボルとグローバルアドレス用シンボルとの参照を選択する第2のコードを生成する、請求項1記載のロードモジュール生成方法。前記第2のコードは、複数のCPUで実行される可能性のある関数において特定のCPUコア内のローカルメモリ上のデータを参照する場合に、上記関数が上記特定のCPUで実行されるか否かを判定する文、上記関数が上記特定のCPUで実行される場合にはローカルアドレスに対応するローカルアドレス用シンボルを用いた参照を行うコード、及び上記関数がその他のCPUで実行される場合にはグローバルアドレスに対応するグローバルアドレス用シンボルを用いた参照を行うコードを含む、請求項3記載のロードモジュール生成方法。前記指示情報は、C言語におけるpragma文で指定される情報である、請求項1記載のロードモジュール生成方法。CPUとローカルメモリをそれぞれが有する複数個のCPUコアの内の一のCPUコアのCPUが他のCPUコア内のローカルメモリを参照するためのグローバルアドレスと、CPUが自らのCPUコア内のローカルメモリを参照するためのローカルアドレスと、を用いるマルチCPUコアシステムによって実行されるプログラムのロードモジュールをコンピュータのデータ処理によって生成するロードモジュール生成方法であって、あるデータをどのCPUコア内のローカルメモリ上に配置するか、および、ある関数がどのCPUで実行されるかを指定した指示情報を有するソースプログラムを入力する入力処理と、前記入力した情報に基づいて、関数毎にその変数の参照にグローバルアドレスを使うか、ローカルアドレスを使うかを判定し、その判定結果に応じてローカルアドレス用シンボル及びグローバルアドレス用シンボルの内の少なくとも一つを参照するオブジェクトコードを生成するコード生成処理と、前記コード生成処理で生成された前記グローバルアドレス用シンボルに対してアドレスを解決し、この解決されたアドレスに基づいてローカルアドレス用シンボルのアドレスを解決するアドレス解決処理と、単一のCPUでのみ実行される関数においてそのCPUコア内のローカルメモリ上の変数を参照する場合はローカルアドレス用シンボルに対応するアドレスを用いるコードを生成し、複数のCPUで実行される可能性のある関数において変数を参照する場合はグローバルアドレス用シンボルに対応するアドレスを用いるコードを生成するアドレス生成処理と、を含むロードモジュール生成方法。CPUとローカルメモリをそれぞれが有する複数個のCPUコアの内の一のCPUコアのCPUが他のCPUコア内のローカルメモリを参照するためのグローバルアドレスと、CPUが自らのCPUコア内のローカルメモリを参照するためのローカルアドレスと、を用いるマルチCPUコアシステムによって実行されるプログラムのロードモジュールをコンピュータのデータ処理によって生成するロードモジュール生成方法であって、あるデータをどのCPUコア内のローカルメモリ上に配置するか、および、ある関数がどのCPUで実行されるかを指定した指示情報を有するソースプログラムを入力する入力処理と、前記入力した情報に基づいて、単一のCPUでのみ実行される関数においてそのCPUコア内のローカルメモリ上の変数を参照する場合はローカルアドレス用シンボルを参照する第1のコードを生成し、複数のCPUで実行される可能性のある関数において特定のCPUコア内のローカルメモリ上のデータを参照する場合に、上記関数が上記特定のCPUで実行されるか否かを判定する文、上記関数が上記特定のCPUで実行される場合にはローカルアドレスに対応するローカルアドレス用シンボルを用いた参照を行うコード、及び上記関数がその他のCPUで実行される場合にはグローバルアドレスに対応するグローバルアドレス用シンボルを用いた参照を行うコードを含む第2のコードを生成するコード生成処理と、前記コード生成処理で生成された前記グローバルアドレス用シンボルに対してアドレスを解決し、この解決されたアドレスに基づいてローカルアドレス用シンボルのアドレスを解決するアドレス解決処理と、前記オブジェクトコードに対してグローバルアドレス用シンボルには対応するグローバルアドレスを用いるコードを生成し、ローカルアドレス用シンボルには対応するローカルアドレスを用いるコードを生成するアドレス生成処理と、を含むロードモジュール生成方法。CPUとローカルメモリをそれぞれが有する複数個のCPUコアの内の一のCPUコアのCPUが他のCPUコア内のローカルメモリを参照するためのグローバルアドレスと、CPUが自らのCPUコア内のローカルメモリを参照するためのローカルアドレスと、を用いるマルチCPUコアシステムによって実行されるプログラムのロードモジュールを生成するための、コンピュータにより実行可能なロードモジュール生成プログラムであって、あるデータをどのCPUコア内のローカルメモリ上に配置するか、及び、ある関数がどのCPUで実行されるかを指定した指示情報を有するソースプログラムを入力し、入力した情報に基づいて、関数毎にその変数の参照にグローバルアドレスを使うか、ローカルアドレスを使うかを判定し、その判定結果に応じてローカルアドレス用シンボル及びグローバルアドレス用シンボルの内の少なくとも一つを参照するオブジェクトコードを生成するコンパイル処理と、前記オブジェクトコードに対してグローバルアドレス用シンボルにはグローバルアドレスを割り当て、ローカルアドレス用シンボルにはローカルアドレスを割り当てて、複数のCPUコアに共通なロードモジュールを生成するリンク処理と、を制御するロードモジュール生成プログラム。前記コンパイル処理において、単一のCPUでのみ実行される関数においてそのCPUコア内のローカルメモリ上の変数を参照する場合はローカルアドレス用シンボルを参照するコードを生成し、複数のCPUで実行される関数の場合にはその変数を参照するためにグローバルアドレス用シンボルを参照するコードを生成する制御を行う、請求項8記載のロードモジュール生成プログラム。前記コンパイル処理において、単一のCPUでのみ実行される関数においてそのCPUコア内のローカルメモリ上の変数を参照する場合はローカルアドレス用シンボルを参照する第1のコードを生成し、複数のCPUで実行される可能性のある関数の場合には関数を実行するCPUと参照する変数の所在に応じてローカルアドレス用シンボルとグローバルアドレス用シンボルとの参照を選択する第2のコードを生成する制御を行う、請求項8記載のロードモジュール生成プログラム。前記第2のコードは、複数のCPUで実行される可能性のある関数において特定のCPUコア内のローカルメモリ上のデータを参照する場合に、上記関数が上記特定のCPUで実行されるか否かを判定する文、上記関数が上記特定のCPUで実行される場合にはローカルアドレスに対応するローカルアドレス用シンボルを用いた参照を行うコード、及び上記関数がその他のCPUで実行される場合にはグローバルアドレスに対応するグローバルアドレス用シンボルを用いた参照を行うコードを含む、請求項10記載のロードモジュール生成プログラム。CPUとローカルメモリをそれぞれが有する複数個のCPUコアの内の一のCPUコアのCPUが他のCPUコア内のローカルメモリを参照するためのグローバルアドレスと、CPUが自らのCPUコア内のローカルメモリを参照するためのローカルアドレスと、を用いるマルチCPUコアシステムによって実行されるプログラムのロードモジュールをコンピュータのデータ処理によって生成するための、コンピュータにより実行可能なロードモジュール生成プログラムであって、あるデータをどのCPUコア内のローカルメモリ上に配置するか、および、ある関数がどのCPUで実行されるかを指定した指示情報を有するソースプログラムを入力する入力処理と、前記入力した情報に基づいて、関数毎にその変数の参照にグローバルアドレスを使うか、ローカルアドレスを使うかを判定し、その判定結果に応じてローカルアドレス用シンボル及びグローバルアドレス用シンボルの内の少なくとも一つを参照するオブジェクトコードを生成するコード生成処理と、前記コード生成処理で生成された前記グローバルアドレス用シンボルに対してアドレスを解決し、この解決されたアドレスに基づいてローカルアドレス用シンボルのアドレスを解決するアドレス解決処理と、単一のCPUでのみ実行される関数においてそのCPUコア内のローカルメモリ上の変数を参照する場合はローカルアドレス用シンボルに対応するアドレスを用いるコードを生成し、複数のCPUで実行される可能性のある関数において変数を参照する場合はグローバルアドレス用シンボルに対応するアドレスを用いるコードを生成するアドレス生成処理と、を制御するロードモジュール生成プログラム。CPUとローカルメモリをそれぞれが有する複数個のCPUコアの内の一のCPUコアのCPUが他のCPUコア内のローカルメモリを参照するためのグローバルアドレスと、CPUが自らのCPUコア内のローカルメモリを参照するためのローカルアドレスと、を用いるマルチCPUコアシステムによって実行されるプログラムのロードモジュールをコンピュータのデータ処理によって生成するための、コンピュータにより実行可能なロードモジュール生成プログラムであって、あるデータをどのCPUコア内のローカルメモリ上に配置するか、および、ある関数がどのCPUで実行されるかを指定した指示情報を有するソースプログラムを入力する入力処理と、前記入力した情報に基づいて、単一のCPUでのみ実行される関数においてそのCPUコア内のローカルメモリ上の変数を参照する場合はローカルアドレス用シンボルを参照する第1のコードを生成し、複数のCPUで実行される可能性のある関数において特定のCPUコア内のローカルメモリ上のデータを参照する場合に、上記関数が上記特定のCPUで実行されるか否かを判定する文、上記関数が上記特定のCPUで実行される場合にはローカルアドレスに対応するローカルアドレス用シンボルを用いた参照を行うコード、及び上記関数がその他のCPUで実行される場合にはグローバルアドレスに対応するグローバルアドレス用シンボルを用いた参照を行うコードを含む第2のコードを生成するコード生成処理と、前記コード生成処理で生成された前記グローバルアドレス用シンボルに対してアドレスを解決し、この解決されたアドレスに基づいてローカルアドレス用シンボルのアドレスを解決するアドレス解決処理と、前記オブジェクトコードに対してグローバルアドレス用シンボルには対応するグローバルアドレスを用いるコードを生成し、ローカルアドレス用シンボルには対応するローカルアドレスを用いるコードを生成するアドレス生成処理と、を制御するロードモジュール生成プログラム。本発明者は異なるCPUコア上で実行される同じ関数から同じ変数を参照する場合における変数のアドレス解決方法について検討した。図6には本発明者によるその検討結果が例示される。第1のCPUコア内のローカルメモリLM1に付与されたローカルアドレスと第2のCPUコア内のローカルメモリLM2に付与されたローカルアドレスとをそれぞれ0x000~0x0ffとする。第1のCPUコア内のローカルメモリLM1に付与されたグローバルアドレスを0x100~0x1ff、第2のCPUコア内のローカルメモリLM2に付与されたグローバルアドレスを0x200~0x2ffとする。第1のCPUコア内のローカルメモリLM1の先頭ローカルアドレスに対する第2のCPUコア内のローカルメモリLM2の先頭グローバルアドレスのオフセットは、offset=0x200となる。図6において、関数F、Gはその記述の一部に含まれる変数Yを参照し、変数Yのデータは第2のCPUコア内のローカルメモリLM2上に配置されている。第2のCPUコア内のローカルメモリLM2上に配置された関数Fの中から第2のCPUコア内のローカルメモリLM2上の変数Yのデータを参照するもの、または、その関数Fの中から第2のCPUコア内のローカルメモリLM2上に配置された関数Gを呼び出すもの、に対しては、第2のCPUに対するメモリ空間内リンカによって上記F,YおよびGのアドレスが解決される。アドレス解決された夫々の関数アドレスをf,g、解決された変数アドレスをy=0x0aaとする。ここで、仮に上記関数Fを第1のCPUコアから呼び出した場合、関数Fはアドレスfoffsetによって正しくコールされる。しかし、すでにオブジェクトコードとなった関数F内のアドレスy及びgはそのままの値のため、第1のCPUコアがコールした関数Fを実行すると第1のCPUコア内のローカルメモリLM1上の不正なアドレスを参照して、誤動作を生ずることになる。これを防止するには、第1CPUコアについてメモリ空間内リンカは、第2CPUコア内のローカルメモリLM2上の関数アドレスfの関数の変数Yに対してアドレス解決を行わず、メモリ空間間リンカによって、fの関数の変数Yに対してグローバルアドレスを用いたアドレス解決を行う。これにより、関数F内で変数Yを参照するアドレスが第1CPUコアの場合にはグローバルアドレス0x2aa、第2CPUコアの場合はローカルアドレス0x0aaとなって、相違される。そのため、関数Fの実体が第1CPUコアと第2CPUコアの両方で別々に必要になる。すなわち、上記のような関数Fを複数のCPUから呼び出す場合には、各CPUコアに関数Fに関するオブジェクトコードが別々に必要になり、システム全体から見れば、メモリ使用量が増加するという課題がある。この点に関し、本発明者はさらに、グローバルアドレスで変数のアドレス解決を行ってオブジェクトコードを生成し、CPUコア内のローカルメモリ上のデータをそのデータのローカルアドレスで参照したいときはそのデータのグローバルアドレスを実行時にローカルアドレスに変換して参照させることによってメモリ使用量を減らすことについても検討した。しかしながら、実行時にアドレスの変換処理を追加すると、参照を高速化するためのローカルアドレスを使えるにもかかわらず、その高速性を十分に生かすことができない。本発明の目的は、ローカルアドレスを用いることによる処理の高速性を犠牲にすることなく、オブジェクトコードを格納するためのメモリ使用量の増大を抑えることができるロードモジュール生成技術を提供することにある。本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。すなわち、CPUとローカルメモリをそれぞれが有する複数個のCPUコアの内のローカルメモリを参照するのにグローバルアドレスとローカルアドレスとを用いることができるマルチCPUコアシステムによって実行されるプログラムのロードモジュールを生成する。この場合に、関数のデータがどのCPUコア内のローカルメモリ上に配置されるか、及び、その関数がどのCPUで実行されるかを指定する指示情報をソースプログラムに付随させる。この指示情報に基づいて、関数毎にその変数の参照にグローバルアドレスを使うか、ローカルアドレスを使うかを判定し、その判定結果に応じてローカルアドレス用シンボル及びグローバルアドレス用シンボルの内の少なくとも一つを参照するオブジェクトコードを生成する。生成したオブジェクトコードに対してグローバルアドレス用シンボルにはグローバルアドレスを割り当て、ローカルアドレス用シンボルにはローカルアドレスを割り当てて、複数のCPUコアに共通なロードモジュールを生成する。これによれば、関数内の変数に対するアドレス解決処理を複数CPU間にまたがるリンク時にまで遅らせることによって、複数のCPUから呼び出される関数に対しては、その中から参照するデータや関数に対するアドレスとしてグローバルアドレス用シンボルに対するアドレスを参照するコードが出力される。出力された単一のコードは複数のCPUで正しく実行されるので、CPU毎に関数のコピーは不要となり、メモリ使用量増加は発生しない。さらに、本来ローカルアドレスを用いた参照が可能な場合にはアドレス変換を行うことを要しないから、ローカルアドレスを用いることによる処理の高速性も犠牲にならない。本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。すなわち、ローカルアドレスを用いることによる処理の高速性を犠牲にすることなく、オブジェクトコードを格納するためのメモリ使用量の増大を抑えることができるロードモジュールを生成することができる。1.実施の形態の概要先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。1<複数CPUコアに共通なロードモジュールの生成>本発明の代表的な実施の形態に係るロードモジュール生成方法は、CPU211,221とローカルメモリ212,222をそれぞれが有する複数個のCPUコア201,202の内の一のCPUコアのCPUが他のCPUコア内のローカルメモリを参照するためのグローバルアドレスと、CPUが自らのCPUコア内のローカルメモリを参照するためのローカルアドレスと、を用いるマルチCPUコアシステム2によって実行されるプログラムのロードモジュール151,151Aをコンピュータ1のデータ処理によって生成するロードモジュール生成方法である。この方法はコンパイル処理120,120A及びリンク処理130を含む。コンパイル処理は、あるデータをどのCPUコア内のローカルメモリ上に配置するか、及び、ある関数がどのCPUで実行されるかを指定した指示情報を有するソースプログラム140を入力し、入力した情報に基づいて、関数毎にその変数の参照にグローバルアドレスを使うか、ローカルアドレスを使うかを判定し、その判定結果に応じてローカルアドレス用シンボルLY及びグローバルアドレス用シンボルGYの内の少なくとも一つを参照するオブジェクトコード141,141Aを生成する処理である。リンク処理は、前記オブジェクトコードに対してグローバルアドレス用シンボルにはグローバルアドレスを割り当て、ローカルアドレス用シンボルにはローカルアドレスを割り当てて、複数のCPUコアに共通なロードモジュール151,151Aを生成する処理である。上記によれば、関数内の変数に対するアドレス解決処理を複数CPU間にまたがるリンク時にまで遅らせることによって、複数のCPUから呼び出される関数に対しては、その中から参照するデータや関数に対するアドレスとして、グローバルアドレス用シンボルに対するアドレスを参照するコードが出力され、その単一のコードは複数のCPUで正しく実行されるので、CPU毎に関数のコピーは不要となり、メモリ使用量増加は発生しない。さらに、ローカルアドレス用シンボルに対するアドレスを参照するコードに対しては、その中から参照するデータや関数に対するアドレスとして、ローカルアドレス用シンボルに対するローカルアドレスを参照するコードがロードモジュール内に生成されるから、本来ローカルアドレスを用いた参照が可能な関数についてロードモジュールを実行するときアドレス変換を行うことを要さず、ローカルアドレスを用いることによる処理の高速性も犠牲にならない。2<単一CPUによる自ローカルメモリ上変数の参照にはローカルアドレス用シンボルを、複数CPUによる同一実行関数からの変数の参照にはグローバルアドレス用シンボルを付与>項1のロードモジュール生成方法における前記コンパイル処理120において、単一のCPUでのみ実行される関数においてそのCPUコア内のローカルメモリ上の変数を参照する場合はローカルアドレス用シンボルを参照するコードg;=LYを生成し、複数のCPUで実行される関数の場合にはその変数を参照するためにグローバルアドレス用シンボルを参照するコードf;=GYを生成する。上記によれば、単一のCPUでのみ実行される関数による変数の参照にはローカルアドレスを用いて当該CPUコア内部で高速に参照を行うことができる。複数のCPUで実行される関数による変数の参照にはグローバルアドレスを用いるから、自らのCPUコア内部の参照の場合には当該CPUコアから出力されたグローバルアドレス信号が当該CPUコアの内部にルーティングされて参照が行われる。自らのCPUコア外部の参照の場合には当該CPUコアから出力されたグローバルアドレス信号が別のCPUコアの内部にルーティングされて参照が行われる。3<単一CPUによる自ローカルメモリ上変数の参照にはローカルアドレス用シンボルを、複数のCPUで実行される関数の場合には実行するCPUに応じて変数の参照シンボルを指示>項1のロードモジュール生成方法における前記コンパイル処理において、単一のCPUでのみ実行される関数においてそのCPUコア内のローカルメモリ上の変数を参照する場合はローカルアドレス用シンボルを参照する第1のコード図5のg;=LYを生成し、複数のCPUで実行される可能性のある関数の場合には関数を実行するCPUと参照する変数の所在に応じてローカルアドレス用シンボルとグローバルアドレス用シンボルとの参照を選択する第2のコード図5のf;ifcpu==2=0x0aa,else=GYを生成する。これによれば、複数のCPUで実行される可能性のある関数に関しても一つのコード内でローカルアドレスを用いる変数参照かグローバルアドレスを用いた変数参照かを選択することができるから、参照主体になるCPUの種別判定処理に要する時間が、CPUコアから出力されたグローバルアドレス信号が当該CPUコアの内部にルーティングされるまでの時間に比べて短ければ、複数のCPUで実行される可能性のある関数による変数の参照をさらに高速化することができる。4<ローカルアドレス用シンボルを用いた参照を行うコード、グローバルアドレス用シンボルを用いた参照を行うコード、及び何れのコードを用いるかの判定文を含む第2のコード>項3のロードモジュール生成方法において、前記第2のコードは、複数のCPUで実行される可能性のある関数において特定のCPUコア内のローカルメモリ上のデータを参照する場合に、上記関数が上記特定のCPUで実行されるか否かを判定する文、上記関数が上記特定のCPUで実行される場合にはローカルアドレスに対応するローカルアドレス用シンボルを用いた参照を行うコード、及び上記関数がその他のCPUで実行される場合にはグローバルアドレスに対応するグローバルアドレス用シンボルを用いた参照を行うコードを含む。これによれば、簡単なコード記述に基づいて項3の作用効果を得ることができる。5<pragma文による指示情報>項1乃至4の何れかのロードモジュール生成方法において、前記指示情報は、C言語におけるpragma文で指定される情報である。これによれば、C言語によるソースプログラムに前記指示情報を容易に付随させることができる。6<単一CPUによる自ローカルメモリ上変数の参照にはローカルアドレス用シンボルを、複数CPUによる同一実行関数からの変数の参照にはグローバルアドレス用シンボルを付与して、複数CPUコアに共通なロードモジュールを生成>本発明の別の形態に係るロードモジュール生成方法は、項1と同様に、CPUとローカルメモリをそれぞれが有する複数個のCPUコアの内の一のCPUコアのCPUが他のCPUコア内のローカルメモリを参照するためのグローバルアドレスと、CPUが自らのCPUコア内のローカルメモリを参照するためのローカルアドレスと、を用いるマルチCPUコアシステムによって実行されるプログラムのロードモジュールをコンピュータのデータ処理によって生成する方法である。特にこの方法は、入力処理、コード生成処理、アドレス解決処理、及びアドレス生成処理を含む。入力処理は、あるデータをどのCPUコア内のローカルメモリ上に配置するか、および、ある関数がどのCPUで実行されるかを指定した指示情報を有するソースプログラムを入力する処理である。コード生成処理は、前記入力した情報に基づいて、関数毎にその変数の参照にグローバルアドレスを使うか、ローカルアドレスを使うかを判定し、その判定結果に応じてローカルアドレス用シンボル及びグローバルアドレス用シンボルの内の少なくとも一つを参照するオブジェクトコードを生成する処理である。アドレス解決処理は、前記コード生成処理で生成された前記グローバルアドレス用シンボルに対してアドレスを解決し、この解決されたアドレスに基づいてローカルアドレス用シンボルのアドレスを解決する処理である。アドレス生成処理は、単一のCPUでのみ実行される関数においてそのCPUコア内のローカルメモリ上の変数を参照する場合はローカルアドレス用シンボルに対応するアドレスを用いるコード図4のg;=0x0aaを生成し、複数のCPUで実行される可能性のある関数において変数を参照する場合はグローバルアドレス用シンボルに対応するアドレスを用いるコード図4のf;=0x2aaを生成する処理である。これによれば、項1及び項2と同様の作用効果を得る。7<単一CPUによる自ローカルメモリ上変数の参照にはローカルアドレス用シンボルを、複数のCPUで実行される関数の場合には実行するCPUに応じて変数の参照シンボルを指示して、複数CPUコアに共通なロードモジュールを生成>本発明の更に別の実施の形態に係るロードモジュール生成方法は、項1と同様に、CPUとローカルメモリをそれぞれが有する複数個のCPUコアの内の一のCPUコアのCPUが他のCPUコア内のローカルメモリを参照するためのグローバルアドレスと、CPUが自らのCPUコア内のローカルメモリを参照するためのローカルアドレスと、を用いるマルチCPUコアシステムによって実行されるプログラムのロードモジュールをコンピュータのデータ処理によって生成する方法である。特にこの方法は、入力処理、コード生成処理、アドレス解決処理、及びアドレス生成処理を含む。入力処理は、あるデータをどのCPUコア内のローカルメモリ上に配置するか、および、ある関数がどのCPUで実行されるかを指定した指示情報を有するソースプログラムを入力する処理である。コード生成処理は、前記入力した情報に基づいて、単一のCPUでのみ実行される関数においてそのCPUコア内のローカルメモリ上の変数を参照する場合はローカルアドレス用シンボルを参照する第1のコード図5のg;=LYを生成し、複数のCPUで実行される可能性のある関数において特定のCPUコア内のローカルメモリ上のデータを参照する場合に、上記関数が上記特定のCPUで実行されるか否かを判定する文、上記関数が上記特定のCPUで実行される場合にはローカルアドレスに対応するローカルアドレス用シンボルを用いた参照を行うコード、及び上記関数がその他のCPUで実行される場合にはグローバルアドレスに対応するグローバルアドレス用シンボルを用いた参照を行うコードを含む第2のコード図5のf;ifcpu==2=LY,else=GYを生成する処理である。アドレス解決処理は、前記コード生成処理で生成された前記グローバルアドレス用シンボルに対してアドレスを解決し、この解決されたアドレスに基づいてローカルアドレス用シンボルのアドレスを解決する処理である。アドレス生成処理は、前記オブジェクトコードに対してグローバルアドレス用シンボルには対応するグローバルアドレスを用いるコードを生成し、ローカルアドレス用シンボルには対応するローカルアドレスを用いるコードを生成する処理である。これによれば、項1、項3及び項4と同様の作用効果を得る。8<複数CPUコアに共通なロードモジュールの生成プログラム>本発明の更に別の実施の形態に係るロードモジュール生成プログラムは、CPUとローカルメモリをそれぞれが有する複数個のCPUコアの内の一のCPUコアのCPUが他のCPUコア内のローカルメモリを参照するためのグローバルアドレスと、CPUが自らのCPUコア内のローカルメモリを参照するためのローカルアドレスと、を用いるマルチCPUコアシステムによって実行されるプログラムのロードモジュール151,151Aを生成するための、コンピュータにより実行可能なロードモジュール生成プログラムである。このプログラムはコンパイル処理120,120Aとリンク処理130を制御する。コンパイル処理は、あるデータをどのCPUコア内のローカルメモリ上に配置するか、及び、ある関数がどのCPUで実行されるかを指定した指示情報を有するソースプログラムを入力し、入力した情報に基づいて、関数毎にその変数の参照にグローバルアドレスを使うか、ローカルアドレスを使うかを判定し、その判定結果に応じてローカルアドレス用シンボル及びグローバルアドレス用シンボルの内の少なくとも一つを参照するオブジェクトコード141,141Aを生成する処理である。リンク処理は、前記オブジェクトコードに対してグローバルアドレス用シンボルにはグローバルアドレスを割り当て、ローカルアドレス用シンボルにはローカルアドレスを割り当てて、複数のCPUコアに共通なロードモジュール151,151Aを生成する処理である。このロードモジュール生成プログラムを用いることにより、項1の方法を容易に実現することができる。9<単一CPUによる自ローカルメモリ上変数の参照にはローカルアドレス用シンボルを、複数CPUによる同一実行関数からの変数の参照にはグローバルアドレス用シンボルを付与>項8のロードモジュール生成プログラムが制御する前記コンパイル処理において、単一のCPUでのみ実行される関数においてそのCPUコア内のローカルメモリ上の変数を参照する場合はローカルアドレス用シンボルを参照するコード図4のg;=LYを生成し、複数のCPUで実行される関数の場合にはその変数を参照するためにグローバルアドレス用シンボルを参照するコード図4のf;=GYを生成する制御を行う。このロードモジュール生成プログラムを用いることにより、項2の方法を容易に実現することができる。10<単一CPUによる自ローカルメモリ上変数の参照にはローカルアドレス用シンボルを、複数のCPUで実行される関数の場合には実行するCPUに応じて変数の参照シンボルを指示>項8のロードモジュール生成プログラムが制御する前記コンパイル処理において、単一のCPUでのみ実行される関数においてそのCPUコア内のローカルメモリ上の変数を参照する場合はローカルアドレス用シンボルを参照する第1のコード図5のg;=LYを生成し、複数のCPUで実行される可能性のある関数の場合には関数を実行するCPUと参照する変数の所在に応じてローカルアドレス用シンボルとグローバルアドレス用シンボルとの参照を選択する第2のコード図5のf;ifcpu==2=LY,else=GYを生成する制御を行う。このロードモジュール生成プログラムを用いることにより、項3の方法を容易に実現することができる。11<ローカルアドレス用シンボルを用いた参照を行うコード、グローバルアドレス用シンボルを用いた参照を行うコード、及び何れのコードを用いるかの判定文を含む第2のオブジェクトコード>項10のロードモジュール生成プログラムにおいて、前記第2のコードは、複数のCPUで実行される可能性のある関数において特定のCPUコア内のローカルメモリ上のデータを参照する場合に、上記関数が上記特定のCPUで実行されるか否かを判定する文、上記関数が上記特定のCPUで実行される場合にはローカルアドレスに対応するローカルアドレス用シンボルを用いた参照を行うコード、及び上記関数がその他のCPUで実行される場合にはグローバルアドレスに対応するグローバルアドレス用シンボルを用いた参照を行うコードを含む。これによれば、簡単なコード記述に基づいて項10の作用効果を得ることができる。12<単一CPUによる自ローカルメモリ上変数の参照にはローカルアドレス用シンボルを、複数CPUによる同一実行関数からの変数の参照にはグローバルアドレス用シンボルを付与して、複数CPUコアに共通なロードモジュールの生成を制御するプログラム>本発明の別の形態に係るロードモジュール生成プログラムは、項8と同様に、CPUとローカルメモリをそれぞれが有する複数個のCPUコアの内の一のCPUコアのCPUが他のCPUコア内のローカルメモリを参照するためのグローバルアドレスと、CPUが自らのCPUコア内のローカルメモリを参照するためのローカルアドレスと、を用いるマルチCPUコアシステム2によって実行されるプログラムのロードモジュール151をコンピュータ1のデータ処理によって生成するための、コンピュータにより実行可能なプログラムである。このプログラムは入力処理121、コード生成処理122、123、アドレス解決処理131、及びアドレス生成処理132を制御する。入力処理は、あるデータをどのCPUコア内のローカルメモリ上に配置するか、および、ある関数がどのCPUで実行されるかを指定した指示情報を有するソースプログラム140を入力する処理である。コード生成処理は、前記入力した情報に基づいて、関数毎にその変数の参照にグローバルアドレスを使うか、ローカルアドレスを使うかを判定し、その判定結果に応じてローカルアドレス用シンボル及びグローバルアドレス用シンボルの内の少なくとも一つを参照するオブジェクトコード141を生成する処理である。アドレス解決処理は、前記コード生成処理で生成された前記グローバルアドレス用シンボルに対してアドレスを解決し、この解決されたアドレスに基づいてローカルアドレス用シンボルのアドレスを解決する処理である。アドレス生成処理は、単一のCPUでのみ実行される関数においてそのCPUコア内のローカルメモリ上の変数を参照する場合はローカルアドレス用シンボルに対応するアドレスを用いるコード図4のg;=0x0aaを生成し、複数のCPUで実行される可能性のある関数において変数を参照する場合はグローバルアドレス用シンボルに対応するアドレスを用いるコード図4のf;=0x2aaを生成する処理である。これによれば、項8及び項9と同様の作用効果を得る。13<単一CPUによる自ローカルメモリ上変数の参照にはローカルアドレス用シンボルを、複数のCPUで実行される関数の場合には実行するCPUに応じて変数の参照シンボルを指示して、複数CPUコアに共通なロードモジュールの生成を制御するプログラム>本発明の別の形態に係るロードモジュール生成プログラムは、項8と同様に、CPUとローカルメモリをそれぞれが有する複数個のCPUコアの内の一のCPUコアのCPUが他のCPUコア内のローカルメモリを参照するためのグローバルアドレスと、CPUが自らのCPUコア内のローカルメモリを参照するためのローカルアドレスと、を用いるマルチCPUコアシステム2によって実行されるプログラムのロードモジュール151Aをコンピュータ1のデータ処理によって生成するための、コンピュータにより実行可能なプログラムである。このプログラムは入力処理121、コード生成処理、アドレス解決処理131、及びアドレス生成処理132を制御する。入力処理は、あるデータをどのCPUコア内のローカルメモリ上に配置するか、および、ある関数がどのCPUで実行されるかを指定した指示情報を有するソースプログラム140を入力する処理である。コード生成処理は、前記入力した情報に基づいて、単一のCPUでのみ実行される関数においてそのCPUコア内のローカルメモリ上の変数を参照する場合はローカルアドレス用シンボルを参照する第1のコード図5のg;=LYを生成し、複数のCPUで実行される可能性のある関数において特定のCPUコア内のローカルメモリ上のデータを参照する場合に、上記関数が上記特定のCPUで実行されるか否かを判定する文、上記関数が上記特定のCPUで実行される場合にはローカルアドレスに対応するローカルアドレス用シンボルを用いた参照を行うコード、及び上記関数がその他のCPUで実行される場合にはグローバルアドレスに対応するグローバルアドレス用シンボルを用いた参照を行うコードを含む第2のコード図5のf;ifcpu==2=LY,else=GYを生成する処理である。アドレス解決処理は、前記コード生成処理で生成された前記グローバルアドレス用シンボルに対してアドレスを解決し、この解決されたアドレスに基づいてローカルアドレス用シンボルのアドレスを解決する処理である。アドレス生成処理は、前記オブジェクトコードに対してグローバルアドレス用シンボルには対応するグローバルアドレスを用いるコードを生成し、ローカルアドレス用シンボルには対応するローカルアドレスを用いるコードを生成する処理である。これによれば、項8、項10及び項11と同様の作用効果を得る。2.実施の形態の詳細実施の形態について更に詳述する。実施の形態1《ロードモジュールの開発システム》図1にはマルチCPU中央処理装置コアシステムとしてのマイクロコンピュータによって実行されるプログラムのロードモジュールを生成する開発システムの概略が例示される。1はロードモジュールの生成に用いるコンピュータシステムとしてのパーソナルコンピュータPCシステム、2はPCシステム1で生成されたロードモジュールを実行するマイクロコンピュータ、3はロードモジュールをマイクロコンピュータ2に書込むPROMライタである。ロードモジュールの書込みはPROMライタ3を用いる構成に限定されず、例えばマイクロコンピュータ2が図示を省略するネットワークを介してPCシステム1からロードモジュールをダウンロードし、ダウンロードしたロードモジュールを自らの書込み制御プログラムを用いて自立的に書き込むことも可能である。PCシステム1に変えてエンジニアリングワークステーションなどを採用することも可能である。PCシステム1には、例えば表示装置として代表的に示されたディスプレイ100、入力装置として代表的に示されたキーボード101、及びPC本体102が設けられる。PC本体102は、プロセッサ、アクセラレータ及びキャッシュメモリなどを搭載したCPUモジュールCPUM110、補助記憶装置として代表的に示されたハードディスクドライブHDD111、RAM112、並びに図示を省略する外部入出力回路などの回路ユニットがバス113を介してインタフェース可能に構成される。RAM112にはソースプログラムからマイクロコンピュータ2のロードモジュール206を生成するためのプログラムなどが格納される。CPUモジュールはキーボードなどから入力される指示にしたがって、RAMのプログラムを実行する。その詳細は後述する。《マイクロコンピュータ》図1に示されるマイクロコンピュータ2は、複数個のCPUコアとして、例えば2個の第1CPUコア201と第2CPUコア202とを有し、それらはバス203に接続される。バス203には例えばRAM204及びROM205などが更に接続される。例えばROM205にはロードモジュール206が書き込まれる。第1CPUコア201はCPUCPU_1211とローカルメモリLM_1212を有し、第2CPUコア202はCPUCPU_2221とローカルメモリLM_2222を有する。CPU211,221は、ROM204が保有するオペレーティングシステムにしたがって、タスクスケジューリング、メモリ管理及び割込み制御などのシステム制御を行う。更に、CPU211,221はROM204が保有するロードモジュール206に含まれる命令コードを夫々の命令実行順にフェッチして実行する。夫々のCPU211,221は自らのCPUコア201,202内のローカルメモリ212,222を参照するのにグローバルアドレスとローカルアドレスとを用いることができる。当然、夫々のCPU211,221は自らのCPUコア201,202の外部にあるローカルメモリ212,222を参照するにはグローバルアドレスを用いる。図2にはローカルメモリ212,222に対するそのようなアドレスマップが例示される。双方のローカルメモリLM_1,LM_2212,222に共通なローカルアドレスLAは0x000≦LA<0x100に割り当てられ、ローカルメモリLM_1212のグローバルアドレスGA_1は0x100≦GA_1<0x200に割り当てられ、ローカルメモリLM_2222のグローバルアドレスGA_2は0x200≦GA_2<0x300に割り当てられる。図2のアドレスマップから明らかなように、CPUCPU_1211からローカルメモリLM_1212をアクセスするとき、及び、CPUCPU_2221からローカルメモリLM_2222をアクセスするときに、それぞれがローカルアドレスを用いる。即ち、ローカルアドレスはローカルメモリに対するアクセスが夫々のCPUコア内に閉じている場合に用いられる。したがって、CPUCPU_1211からローカルメモリLM_1212をアクセスするとき、ローカルメモリLM_1212の先頭アドレスは0x000となり、同様に、CPUCPU_2221からローカルメモリLM_2222をアクセスするとき、ローカルメモリLM_2222の先頭アドレスも0x000となる。CPU211,221はグローバルアドレスを用いたアクセスを行う場合にはそのアドレス信号をバス203に出力する。出力されたアドレス信号はバス203のルータによって、それが示すアドレスの回路モジュールに向けてルーティングされる。例えば、第1CPU211がローカルメモリLM_1211をアクセスするとき、そのグローバルアドレスを用いると、そのローカルアドレスを用いる場合に比べてアクセスに時間がかかる。これは、CPUがグローバルアドレスを用いて他のCPUコア内のローカルメモリをアクセスする場合と同様である。図3にはローカルアドレスとグローバルアドレスによるローカルメモリのアクセス経路が例示される。第1CPUコア210及び第2CPUコア202の内部にそれぞれ示される経路aはローカルアドレスによるアクセス経路を示す。CPU211,221はローカルアドレスを用いたアクセスであることを例えば、アドレス信号0x000の最初の桁が0であることから判別する。経路bはCPUCPU_1211がグローバルアドレスを使ってローカルメモリLM_1212をアクセスするときの経路を示す。CPUCPU_1211は例えばアクセスアドレス0x100の最初の桁が0でないことから外部のバス203に対してアクセス要求を出力する。バス203のルータはそのアドレスの最初の桁が1であることから、当該アクセス要求を第1CPUコア201内のローカルメモリLM_1212に向けてルーティングし、これをCPUCPU_1211が受け付けて自らのローカルメモリLM_1212をアクセスする。この場合は経路aに比べてアクセス経路が長くなるので、アクセスに時間がかかる。経路cはCPUCPU_1211がグローバルアドレスを使って第2CPUコア202内のローカルメモリLM_2222をアクセスするときの経路を示す。CPUCPU_1211は例えばアクセスアドレス0x200の最初の桁が0でないことから外部のバス203に対してアクセス要求を出力する。バス203のルータはそのアドレスの最初の桁が2であることから、当該アクセス要求を第2のCPUコア201内のローカルメモリLM_2222に向けてルーティングし、これをCPUCPU_2221が受け付けて自らのローカルメモリLM_2222をアクセスする。この場合も経路aに比べてアクセス経路が長くなるので、アクセスに時間がかかるが、これはCPUCPU_1211が別の第2のCPUコア内のローカルメモリLM_2222をアクセスするために必ず必要とされる時間である。《ロードモジュール生成処理》ロードモジュールを生成するプログラムとして例えば図1のRAM112はコンパイラ120とリンカ130を格納する。図1の表記では便宜上コンパイラ120やリンカ130が必要な情報を読み込んでコードを生成するかのように記載されているが、実際にはCPUモジュール110がコンパイラ120及びリンカ130を実行しながら、必要な情報を読み込んでコードを生成するものと理解されたい。夫々の処理の詳細は後述するものとして、CPUモジュール110は前記コンパイラ120を実行することにより、データ関数情報入力処理121、MAS出力処理122、及びMAS参照コード生成処理123などを制御して、データ関数情報付きソースプログラム140からMAS及びMAS参照コード入りオブジェクトコード141を生成する。MASは多重アドレス付けシンボルMultiplyAddressedSymbolを表す。また、CPUモジュール110は前記リンカ130を実行することにより、アドレスマップ情報150などを参照しながらローカルアドレス解決処理131及びMASアドレス生成処理132などを制御して、MAS及びMAS参照コード入りオブジェクトコード141からロードモジュール151を生成する。生成されたロードモジュール151はROM書込みツール152の制御に従ってROMライタ3でマイクロコンピュータ2のROM204に書き込まれる。図4にはロードモジュールを生成する処理フローが例示される。コンパイルの対象にされるソースプログラムには、あるデータをどのCPUコア内のローカルメモリ上に配置するか、および、ある関数がどのCPUで実行されるかを指定した指示情報が付随される。この指示情報をここではデータ関数情報と称し、コンパイラ120はデータ関数情報付きソースプログラム140を入力する。図4の例では、データ関数情報付きソースプログラム140は、2つのpragma文と2つの関数F,Gから構成される。pragma文とはコンパイラに付加情報を与えるためのC言語に備わる文である。ここで、図4に示されたpragmaYinLM2は、変数YがローカルメモリLM_2222に配置されることを表す。また、pragmaGexeconCPU2は、関数GがCPUCPU_2202で実行されることを表す。pragma文の下に示される2つの図形は各々、関数FとGを模式的に表現したものである。2つの矩形から構成される図形は、図4の凡例に示されるように、左側が関数名を、右側が関数本体に書かれたコードの一部を表す。関数FとGにおいてYの記述は、関数FとGの中に変数Yを参照する文が含まれることを表す。コンパイラ120を用いたデータ関数情報入力処理121では、データ関数情報付きのソースプログラムにおける2つのpragma文を入力して解釈し、変数YがローカルメモリLM_2222に配置されること及び関数Gが第2CPUCPU_2202で実行されることを示す情報を取り込む。MAS出力処理122では、変数Yに対する2つのシンボル情報GYとLYをオブジェクトコードに出力する。ここで、GYはグローバルアドレスに対応するシンボルであり、LYはローカルアドレスに対応するシンボルを表す。MAS参照コード生成処理123では関数Fにおける変数Yの参照に対して、YがローカルメモリLM_2222上に配置される情報はあるが、関数がどのCPUで実行されるかという情報がないことから、関数Fについてはグローバルアドレスに対応するシンボルGYを用いた参照を行うと判断し、グローバルアドレス用シンボルGYを用いたコードfをオブジェクトコード141中に出力する。コードfは関数Fについてコンパイラ120でコンパイルされたコードを意味する。また、MAS参照コード生成処理では、関数Gにおける変数Yの参照に対して、変数YがローカルメモリLM_2222に配置される情報と関数Gが第2CPUYCPU_2221で実行されるという情報から、関数Gについてはローカルアドレスに対応するローカルアドレス用シンボルLYを用いた参照を行うと判断し、ローカルアドレス用シンボルLYを用いたコードgをオブジェクトコード141中に出力する。コードgは関数Gについてコンパイラ120でコンパイルされたコードを意味する。その結果として、図4のMAS及びMAS参照コード入りオブジェクトコードには、変数Yのグローバルアドレス用シンボルGY及び変数Yのローカルアドレス用真吾ルLYを含むシンボル情報テーブルと、関数F,Gに対するオブジェクトコードf、gが示されている。リンカ130による処理では、前記MAS及びSAM参照コード入りオブジェクトコード141とアドレスマップ情報150を入力して、まず、リンカ130の既存技術によってグローバルアドレス変数に対するアドレスを解決する。アドレスマップ情報は図2に例示した情報に従って、例えば、ローカルメモリの番号ローカルメモリLM_1の番号は1、ローカルメモリLM_2の番号は2からグローバルアドレスの最初の桁番号ローカルメモリLM_1におけるグローバルアドレスの最初の桁番号は1、ローカルメモリLM_2におけるグローバルアドレスの最初の桁番号は2を得るための方法を特定する情報、即ち、LM_nに対してアドレスの最初の桁番号がnであるという情報と、グローバルアドレスからローカルアドレスを得るための方法を特定するための情報、即ち、アドレスの最初の桁番号と0x0の論理積を取るという情報とを含む。例えば、先ず、変数YがローカルメモリLM_2222に配置されることからYのグローバルアドレス用シンボルGYのアドレスは0x2aaと決定することによって、グローバルアドレス用シンボルGYに対応するグローバルアドレス変数に対するアドレスを解決する。次に、ローカルアドレス解決処理131ではグローバルアドレス用シンボルGYのアドレス0x2aa]と上記アドレスマップ情報150から、Yのローカルアドレス用シンボルLYのアドレスを、0x0aaと決定する。MAS用アドレス生成処理132では、ローカルアドレス用シンボルに対してはローカルアドレスを用い、グローバルアドレス用シンボルに対してはグローバルアドレスを用いるコードを出力する。これにより、例えば、オブジェクトコード141中のグローバルアドレス用シンボルGYに対する参照に対してアドレス0x2aaを、ローカルアドレス用シンボルLYに対する参照に対してアドレス0x0aaを用いるコードを出力する。この結果、図4に例示されるコア1及びコア2共用ロードモジュール151を得る。コア1及びコア2共用ロードモジュール151は、アドレス解決された後の2つの関数fとgから構成される。fとgは、実際には、各々、関数FとGのアドレスを表すことになる。関数fと関数g本体の中に現れるアドレス0x2aaと0x0aaは各々、変数Yに対するグローバルアドレスとローカルアドレスを表す。変数YはローカルメモリLM_2222に配置されるので、第2CPUCPU_2221で実行される関数gからはローカルアドレス参照になり最初の桁が0になる、関数fは第1CPUCPU_1211と第2CPUCPU_2221のどちらのCPUで実行されるか不明なため、ローカルメモリLM_2222上のYに対するアドレスはグローバルアドレス最初の桁が2で指定されている。実施の形態1によるロードモジュールの生成方法によれば、全てのCPUコアで実行するソースプログラムにおいて、関数で参照するデータ即ち変数がどのCPUコア内のローカルメモリに配置されるか、及び、ある関数が一つのCPU上でのみ実行される場合はそれがどのCPU上で実行されるかを示す情報データ関数情報をソースプログラムに追加した。コンパイラ120はこの情報を入力し、関数毎にグローバルアドレスを使うか、ローカルアドレスを使うかを判定し、同じ変数のデータに対してリンカが上記互いに関連する2種類の異なるアドレスを出力することが可能となるように、2種類のシンボル情報GY,LYと各々を参照するオブジェクトコードMAS及びMAS参照コード入りオブジェクトコード141を生成するようにした。リンカ130は既存の技術によって、グローバルアドレスを持つシンボルに対するアドレスを解決し、上記2種類の互いに異なるアドレス間の関係をアドレスマップ情報150から読み取ることによって、ローカルアドレスを持つシンボルLYに対するアドレスを解決するようにした。更に、グローバルアドレスを持つシンボルGYとローカルアドレスを持つシンボルLYに対して、各々、ローカルアドレス、グローバルアドレスを出力することによって、第1のCPUコア202と第2のCPUコア201に共通なロードモジュール151を生成するようにした。これらによって、あるCPUがそのCPUコア内のローカルメモリ上のあるデータを参照する場合が判定できるので、ローカルアドレスを使った最適コードを出力することができる。先に本発明者が検討したように、アドレス解決を全てグローバルアドレスで行っておき、ローカルメモリ上のあるデータを参照する場合には命令実行時にグローバルアドレスをローカルアドレスに変換する方法に比べて、参照の高速化を実現することができる。要するに、ローカルアドレスを用いることによる処理の高速性が犠牲にならない。また、ある関数が複数のCPUコア上で実行されることが判定できるので、第1CPUCPU_1211上でも第2CPUCPU_2222上でも実行できるようなグローバルアドレスを用いたコードを出力することができ、従来技術のように同じ関数に対してCPU毎に関数のコピーを作成する必要が無くなるので、使用メモリ量を削減することができる。《ロードモジュール生成プログラム》上記ロードモジュールの生成方法はPCシステム1のようなコンピュータにロードモジュール生成プログラムを実行させることによって実現される。そのようなプログラムは、前記コンパイラ120によるコンパイル処理とリンカ130によるリンク処理を制御する。コンパイル処理は、あるデータをどのCPUコア内のローカルメモリ上に配置するか、及び、ある関数がどのCPUで実行されるかを指定した指示情報を有するソースプログラムを入力し、入力した情報に基づいて、関数毎にその変数の参照にグローバルアドレスを使うか、ローカルアドレスを使うかを判定し、その判定結果に応じてローカルアドレス用シンボル及びグローバルアドレス用シンボルの内の少なくとも一つを参照するオブジェクトコードを生成する処理を行えばよく、例えば前記データ関数情報入力処理121、MAS出力処理122、及びMAS参照コード生成処理123によって構成すればよい。リンク処理は、前記オブジェクトコードに対してグローバルアドレス用シンボルにはグローバルアドレスを割り当て、ローカルアドレス用シンボルにはローカルアドレスを割り当てて、複数のCPUコアに共通なロードモジュールを生成する処理を行えばよく、例えば既存のグローバルアドレス解決処理、ローカルアドレス解決処理131、及びMAS用アドレス生成処理によって構成すればよい。このロードモジュール生成プログラムを用いることにより、実施の形態1に係るロードモジュール生成方法を容易に実現することができる。実施の形態2図5にはロードモジュールを生成する別の処理フローが例示される。ここでは特に図示はしないが図1のPCシステム1と類似のコンピュータを用いてマイクロコンピュータ2のロードモジュールを生成する処理について説明する。図1及び図4との相違点はコンパイラ120Aによる一部の処理である。その結果として、リンカ130による処理結果が相違される。以下では、図1及び図4との相違点を中心に処理の詳細を説明する。コンパイラ120Aは実施の形態1と同様のデータ関数情報入力処理及びMAS出力処理を行うが、MAS参照コード生成処理では、関数Fにおける変数Yの参照に対して、変数YがローカルメモリLM_2222上に配置される情報ではあるが、関数Fが第1CPUCPU_1211と第2CPUCPU_2221のどのCPUで実行されるかという情報がないことから、関数Fが第2CPUCPU_2221で実行される場合と他のCPUで実行される場合に分けたコードを出力する。即ち、関数Fが第2CPUCPU_2221で実行されるか否かを判定する文ifcpu==2、関数Fが第2CPUCPU_2221で実行される場合にはローカルアドレスに対応するシンボルLYを用いた参照を行うコード=LY、関数Fがその他のCPUで実行される場合にはグローバルアドレスに対応するシンボルGYを用いた参照を行うコード=GY、を含むコードfをオブジェクトコード141A中に出力する。一方、MAS参照コード出力部は関数Gにおける変数Yの参照に対して、変数YがローカルメモリLM_2222上に配置される情報と関数Gが第2CPUCPU_2221で実行されるという情報から、ローカルアドレスに対応するシンボルLYを用いた参照を行うと判断し、シンボルLYを用いた参照コード=LYを含むコードgをオブジェクトコード141A中に出力する。リンカ130による処理は、実施の形態1と同様であるが、入力として図5の前記MAS及びSAM参照コード入りオブジェクトコード141Aと前述のアドレスマップ情報150を入力して、まず、リンカ130の既存技術によってグローバルアドレス変数に対するアドレスを解決する。アドレスマップ情報150の内容は実施の形態1と同じである。このとき、前記MAS及びSAM参照コード入りオブジェクトコード141Aに対するMAS用アドレス生成処理では、例えば、先ず、変数YがローカルメモリLM_2222に配置されることからYのグローバルアドレス用シンボルGYのアドレスは0x2aaと決定することによって、グローバルアドレス用シンボルGYに対応するグローバルアドレス変数に対するアドレスを解決する。次に、ローカルアドレス解決処理ではグローバルアドレス用シンボルGYのアドレス0x2aa]と上記アドレスマップ情報150から、Yのローカルアドレス用シンボルLYのアドレスを、0x0aaと決定する。MAS用アドレス生成処理132では、ローカルアドレス用シンボルに対してはローカルアドレスを用い、グローバルアドレス用シンボルに対してはグローバルアドレスを用いるコードを出力する。これにより、例えば、オブジェクトコード141中のグローバルアドレス用シンボルGYに対する参照に対してアドレス0x2aaを、ローカルアドレス用シンボルLYに対する参照に対してアドレス0x0aaを用いるコードを出力する。この結果、MAS及びMAS参照コード入りオブジェクトコード141Aの記述にしたがって、図5に例示されるコア1及びコア2共用ロードモジュール151Aを得る。コア1及びコア2共用ロードモジュール151Aは、アドレス解決された後の2つの関数fとgから構成される。fとgは、実際には、各々、関数FとGのアドレスを表すことになる。関数fと関数g本体の中に現れるアドレス0x2aaと0x0aaは各々、変数Yに対するグローバルアドレスとローカルアドレスを表す。変数YはローカルメモリLM_2222に配置されるので、第2CPUCPU_2221で実行される関数gからはローカルアドレス0x0aaの参照になる。さらに、関数fを実行するCPUが第2CPUCPU_2221か否かを判するコード、第2CPUCPU_2221の場合にはローカルアドレス0x0aaの参照、それ以外のCPUの場合にはグローバルアドレス0x2aaの参照を示すコードが生成される。実施の形態2では、MAS参照コード生成処理により、複数のCPUで実行される可能性のある関数において特定のCPUコア内のローカルメモリ上のデータを参照する場合に、上記関数が上記特定のCPUで実行されるか否かを判定する文、上記関数が上記特定のCPUで実行される場合にはローカルアドレスに対応するシンボルを用いた参照を行うコード、及び上記関数がその他のCPUで実行される場合にはグローバルアドレスに対応するシンボルを用いた参照を行うコードを、オブジェクトコードに出力するコンパイラ120Aを採用した。したがって、MAS参照コード生成処理において関数Fを実行するCPUの番号に応じてローカルメモリアクセスが自CPUコア内のアクセスか否かに応じた条件文にてMAS及びMAS参照コード入りオブジェクトコード141Aを生成するから、関数Fを実行するCPUの番号をプログラム実行中に判定し、CPU番号が2の場合には自CPUコア内のローカルメモリを高速に参照できる。これにより、判定処理と自CPUコア内ローカルメモリの参照にかかる合計時間が他CPUコア内のローカルメモリを参照する時間よりも少なければ、プログラムの実行を実施の形態1よりも更に高速化することができる。《ロードモジュール生成プログラム》図5に基づいて説明した上記ロードモジュールの生成方法はPCシステム1のようなコンピュータにロードモジュール生成プログラムを実行させることによって実現されることは言うまでもない。そのようなプログラムは、前記コンパイラ120Aによるコンパイル処理とリンカ130によるリンク処理を制御する。コンパイル処理は、あるデータをどのCPUコア内のローカルメモリ上に配置するか、及び、ある関数がどのCPUで実行されるかを指定した指示情報を有するソースプログラムを入力し、入力した情報に基づいて、関数毎にその変数の参照にグローバルアドレスを使うか、ローカルアドレスを使うかを判定する。コンパイル処理は、その判定結果に応じてローカルアドレス用シンボル及びグローバルアドレス用シンボルの内の少なくとも一つを参照するオブジェクトコードを生成する処理を行えばよい。例えば実施の形態1と同様の前記データ関数情報入力処理121及びMAS出力処理122、並びに実施の形態2特有のMAS参照コード生成処理によって構成すればよい。このMAS参照コード生成処理では、前述のとおり、複数のCPUで実行される可能性のある関数において特定のCPUコア内のローカルメモリ上のデータを参照する場合にその関数が上記特定のCPUで実行されるか否かを判定するコード、当該関数が特定のCPUで実行される場合にはローカルアドレスに対応するシンボルを用いた参照を行うコード、及び上記関数がその他のCPUで実行される場合にはグローバルアドレスに対応するシンボルを用いた参照を行うコード、をオブジェクトコードとして生成すればよい。リンク処理は上述のとおり、例えば既存のグローバルアドレス解決処理、ローカルアドレス解決処理、及びMAS用アドレス生成処理によって構成すればよい。このロードモジュール生成プログラムを用いることにより、実施の形態2に係るロードモジュール生成方法を容易に実現することができる。以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。例えば、ロードモジュールが適用されるマルチCPUコアシステムはCPUコアの数が2個に限定されず、3個以上であってよいことは言うまでもない。マイクロコンピュータ2に代表されるマルチCPUコアシステム、及びロードモジュールの生成を制御するためのPC本体1に代表されるコンピュータの内部構成は図1の説明に制限されず適宜変更可能である。"