IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 芯原微電子(上海)股▲ふん▼有限公司の特許一覧 ▶ 芯原微電子(成都)有限公司の特許一覧 ▶ 芯原微電子(南京)有限公司の特許一覧

特表2024-531014クロスリンク方法、装置、電子機器およびコンピュータプログラム
<>
  • 特表-クロスリンク方法、装置、電子機器およびコンピュータプログラム 図1
  • 特表-クロスリンク方法、装置、電子機器およびコンピュータプログラム 図2
  • 特表-クロスリンク方法、装置、電子機器およびコンピュータプログラム 図3
  • 特表-クロスリンク方法、装置、電子機器およびコンピュータプログラム 図4
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-08-29
(54)【発明の名称】クロスリンク方法、装置、電子機器およびコンピュータプログラム
(51)【国際特許分類】
   G06F 8/54 20180101AFI20240822BHJP
【FI】
G06F8/54
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023554384
(86)(22)【出願日】2022-08-17
(85)【翻訳文提出日】2023-09-06
(86)【国際出願番号】 CN2022113080
(87)【国際公開番号】W WO2024036517
(87)【国際公開日】2024-02-22
(81)【指定国・地域】
(71)【出願人】
【識別番号】519371507
【氏名又は名称】芯原微電子(上海)股▲ふん▼有限公司
(71)【出願人】
【識別番号】521431804
【氏名又は名称】芯原微電子(成都)有限公司
(71)【出願人】
【識別番号】521148094
【氏名又は名称】芯原微電子(南京)有限公司
【氏名又は名称原語表記】VERISILICON MICROELECTRONICS(NANJING)CO.,LTD.
【住所又は居所原語表記】22/F,Block B,Chuangzhi Building 17 Xinghuo Road,Jiangbei New District Nanjing,Jiangsu 211500 China
(74)【代理人】
【識別番号】110000408
【氏名又は名称】弁理士法人高橋・林アンドパートナーズ
(72)【発明者】
【氏名】于亭亭
(72)【発明者】
【氏名】張珂
(72)【発明者】
【氏名】林舒晞
【テーマコード(参考)】
5B081
【Fターム(参考)】
5B081CC51
(57)【要約】
本出願は、クロスリンク方法、装置、電子機器および記憶媒体を提供する。クロスリンク方法は、ライブラリ関数の第1操作命令におけるレジスタアドレスが予め作成したマッピングテーブルにある場合、第1操作命令におけるレジスタアドレスを変更するステップと、変更された第1操作命令をメインプログラムにリンクするステップとを含み、マッピングテーブルは、メインプログラムの宛先レジスタアドレスとライブラリ関数のレジスタアドレスとのマッピング関係を含み、メインプログラムの宛先レジスタアドレスが第1アドレスビット数に上げられ、ライブラリ関数の操作命令におけるレジスタアドレスが第2アドレスビット数であり、第1アドレスビット数が第2アドレスビット数よりも大きく、変更された第1操作命令におけるレジスタアドレスがマッピングテーブルにおける対応するメインプログラムの宛先レジスタアドレスである。これにより、作業員がライブラリ関数を作成するすべてのコンパイラを第1アドレスビット数にアップグレードする必要もなく、作業員にかかる負担を軽減し、後続プロジェクトの開発を加速することができる。
【選択図】図2
【特許請求の範囲】
【請求項1】
ライブラリ関数の第1操作命令におけるレジスタアドレスが予め作成したマッピングテーブルにある場合、前記第1操作命令におけるレジスタアドレスを変更するステップと、
前記変更された第1操作命令をメインプログラムにリンクするステップとを含み、
前記マッピングテーブルは、前記メインプログラムの宛先レジスタアドレスと前記ライブラリ関数のレジスタアドレスとのマッピング関係を含み、前記メインプログラムの宛先レジスタアドレスが第1アドレスビット数に上げられ、前記ライブラリ関数の操作命令におけるレジスタアドレスが第2アドレスビット数であり、第1アドレスビット数が第2アドレスビット数よりも大きく、変更された第1操作命令におけるレジスタアドレスが前記マッピングテーブルにおける対応するメインプログラムの宛先レジスタアドレスである
ことを特徴とするクロスリンク方法。
【請求項2】
前記ライブラリ関数におけるすべての命令をスキャンする前に、
前記ライブラリ関数におけるそれぞれのレジスタにそれぞれ1つの命令で値を代入するように、前記ライブラリ関数に対応するレジスタをリネームするステップをさらに含む
ことを特徴とする請求項1に記載の方法。
【請求項3】
ライブラリ関数のアドレス操作命令が予め作成したマッピングテーブルにある場合、前記ライブラリ関数のアドレス操作命令におけるレジスタアドレスを変更する前に、
前記ライブラリ関数におけるすべての命令をスキャンし、アドレス操作命令である前記第1操作命令を特定するステップと、
前記第1操作命令におけるレジスタアドレスを前記マッピングテーブルとマッチングするステップとをさらに含む
ことを特徴とする請求項1に記載の方法。
【請求項4】
前記ライブラリ関数におけるすべての命令をスキャンする前に、
第2アドレスビット数である、呼び出されたライブラリ関数に入力パラメータを提供するための宛先レジスタアドレスと、ソースレジスタアドレスとを含む前記メインプログラムのパラメータ伝送命令を取得するステップと、
前記宛先レジスタアドレスを第1アドレスビット数に上げるとともに、前記呼び出されたライブラリ関数の、その自身の入力パラメータのアドレスであるレジスタアドレスと関連付けるステップと、
ビット数が上げられた前記宛先レジスタアドレスと前記呼び出されたライブラリ関数のレジスタアドレスに基づいて前記マッピングテーブルを構築するステップと、をさらに含む
ことを特徴とする請求項3に記載の方法。
【請求項5】
前記メインプログラムのパラメータ伝送命令を取得する前に、
第1アドレスビット数のコンパイラにより、第1アドレスビット数のメインプログラムのソースコードを前記メインプログラムにコンパイルするステップと、
第2アドレスビット数のコンパイラにより、第2アドレスビット数のライブラリ関数のソースコードを前記ライブラリ関数にコンパイルするステップと、をさらに含む
ことを特徴とする請求項4に記載の方法。
【請求項6】
前記マッピングテーブルにあるレジスタアドレスおよび前記マッピングテーブルにないレジスタアドレスが前記第1操作命令に存在する場合、
前記マッピングテーブルにないレジスタアドレスに対応するメインプログラムの宛先レジスタを符号拡張により第1アドレスビット数に上げ、前記マッピングテーブルを更新するステップと、
更新されたマッピングテーブルに基づいて前記第1操作命令におけるレジスタアドレスを変更するステップとをさらに含む
ことを特徴とする請求項1に記載の方法。
【請求項7】
前記第1操作命令は、ロード命令、ストア命令、演算命令のうちのいずれか一種を含むことを特徴とする請求項1~6のいずれか一項に記載の方法。
【請求項8】
ライブラリ関数の第1操作命令におけるレジスタアドレスが予め作成したマッピングテーブルにある場合、前記第1操作命令におけるレジスタアドレスを変更する処理モジュールと、
前記変更された第1操作命令をメインプログラムにリンクするリンクモジュールとを含み、
前記マッピングテーブルは、前記メインプログラムの宛先レジスタアドレスと前記ライブラリ関数のレジスタアドレスとのマッピング関係を含み、前記メインプログラムの宛先レジスタアドレスが第1アドレスビット数に上げられ、前記ライブラリ関数の操作命令におけるレジスタアドレスが第2アドレスビット数であり、第1アドレスビット数が第2アドレスビット数よりも大きく、変更された第1操作命令におけるレジスタアドレスが前記マッピングテーブルにおける対応するメインプログラムの宛先レジスタアドレスである
ことを特徴とするクロスリンク装置。
【請求項9】
前記ライブラリ関数におけるすべての命令をスキャンする前に、前記ライブラリ関数におけるそれぞれのレジスタにそれぞれ1つの命令で値を代入するように、前記ライブラリ関数に対応するレジスタをリネームするリネームモジュールをさらに含む
ことを特徴とする請求項8に記載の装置。
【請求項10】
ライブラリ関数のアドレス操作命令が予め作成したマッピングテーブルにある場合、前記ライブラリ関数のアドレス操作命令におけるレジスタアドレスを変更する前に、前記ライブラリ関数におけるすべての命令をスキャンし、アドレス操作命令である前記第1操作命令を特定し、前記第1操作命令におけるレジスタアドレスを前記マッピングテーブルとマッチングするマッチングモジュールをさらに含む
ことを特徴とする請求項8に記載の装置。
【請求項11】
前記ライブラリ関数におけるすべての命令をスキャンする前に、第2アドレスビット数である、呼び出されたライブラリ関数に入力パラメータを提供するための宛先レジスタアドレスと、ソースレジスタアドレスとを含む前記メインプログラムのパラメータ伝送命令を取得し、前記宛先レジスタアドレスを第1アドレスビット数に上げるとともに、前記呼び出されたライブラリ関数の、その自身の入力パラメータのアドレスであるレジスタアドレスと関連付け、ビット数が上げられた前記宛先レジスタアドレスと前記呼び出されたライブラリ関数のレジスタアドレスに基づいて前記マッピングテーブルを構築する構築モジュールをさらに含む
ことを特徴とする請求項10に記載の装置。
【請求項12】
前記メインプログラムのパラメータ伝送命令を取得する前に、第1アドレスビット数のコンパイラにより、第1アドレスビット数のメインプログラムのソースコードを前記メインプログラムにコンパイルし、第2アドレスビット数のコンパイラにより、第2アドレスビット数のライブラリ関数のソースコードを前記ライブラリ関数にコンパイルするコンパイルモジュールをさらに含む
ことを特徴とする請求項11に記載の装置。
【請求項13】
前記マッピングテーブルにあるレジスタアドレスおよび前記マッピングテーブルにないレジスタアドレスが前記第1操作命令に存在する場合、前記マッピングテーブルにないレジスタアドレスに対応するメインプログラムの宛先レジスタを符号拡張により第1アドレスビット数に上げ、前記マッピングテーブルを更新し、更新されたマッピングテーブルに基づいて前記第1操作命令におけるレジスタアドレスを変更する更新モジュールをさらに含む
ことを特徴とする請求項8に記載の装置。
【請求項14】
前記第1操作命令は、ロード命令、ストア命令、演算命令のうちのいずれか一種を含むことを特徴とする請求項8~13のいずれか一項に記載の装置。
【請求項15】
プロセッサと、
前記プロセッサに接続され、前記プロセッサに実行されて請求項1~7のいずれか一項に記載の方法を実行させるプログラムを記憶しているメモリと、を含む
ことを特徴とする電子機器。
【請求項16】
コンピュータに実行されると、請求項1~7のいずれか一項に記載の方法を実行させるコンピュータプログラムを記憶している
ことを特徴とするコンピュータ読取可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、コンピュータの技術分野に関し、具体的に、クロスリンク方法、装置、電子機器および記憶媒体に関する。
【背景技術】
【0002】
コンパイル・リンクは、高級言語プログラム(ソースコード)をハードウェアで実行可能なプログラム(実行可能コードまたは機械語)に変換するプロセスであり、主にコンパイルとリンクの2つのステップを含む。コンパイルは、高級言語ソースコードを中間コード(オブジェクトファイル)に変換するものである。リンクは、オブジェクトファイルと呼び出されるライブラリファイル(ライブラリ関数を含む)を結合して最終的な実行可能コードを作成するものである。
【0003】
例えば、アドレス長のビット数によって、コンパイラは、64ビットのコンパイラと32ビットのコンパイラを含む。コンパイラがマルチハードウェアプラットフォームやマルチプログラミング言語をサポートしている場合、一部のプログラムが32ビットのフロントエンドにより作成され、一部のプログラムが64ビットのフロントエンドにより作成されるという複雑な状況が発生する。具体的に、64ビットの実行可能プログラムが必要となるが、ライブラリ関数が32ビットのコンパイラで作成された場合、クロスリンクする際に、従来のリンカは、この場合に作成された機械語の正確性を確保できないため、作業員は、すべてのライブラリ関数を64ビットにアップグレードせざるを得ない。このため、ライブラリ関数を作成するすべてのコンパイラを64ビットにアップグレードする必要があり、作業員に大きな負担がかかる。従来のコンパイル・リンクによって、ライブラリ関数をアップグレードせずにビット数が異なるプログラムのクロスリンクを実現することができない。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本出願の実施形態は、アドレスビット数が異なるプログラムのクロスリンクを実現できるクロスリンク方法、装置、電子機器および記憶媒体を提供することを目的とする。
【課題を解決するための手段】
【0005】
本出願は、以下のように実現される。
【0006】
第1の形態において、本出願の実施形態は、クロスリンク方法を提供する。クロスリンク方法は、ライブラリ関数の第1操作命令におけるレジスタアドレスが予め作成したマッピングテーブルにある場合、前記第1操作命令におけるレジスタアドレスを変更するステップと、前記変更された第1操作命令をメインプログラムにリンクするステップとを含み、前記マッピングテーブルは、前記メインプログラムの宛先レジスタアドレスと前記ライブラリ関数のレジスタアドレスとのマッピング関係を含み、前記メインプログラムの宛先レジスタアドレスが第1アドレスビット数に上げられ、前記ライブラリ関数の操作命令におけるレジスタアドレスが第2アドレスビット数であり、第1アドレスビット数が第2アドレスビット数よりも大きく、変更された第1操作命令におけるレジスタアドレスが前記マッピングテーブルにおける対応するメインプログラムの宛先レジスタアドレスである。
【0007】
本出願の実施形態において、ライブラリ関数の操作命令をメインプログラムにリンクする前に、予め作成したマッピングテーブルを検索し、第1操作命令におけるレジスタアドレスが予め作成したマッピングテーブルにある場合、マッピングテーブルのマッピング関係にしたがい第1操作命令におけるレジスタアドレスを変更し(つまり、第1アドレスビット数に上げる)、変更された第1操作命令をメインプログラムにリンクする。これによって、ライブラリ関数をメインプログラムにリンクする際の正確性とアドレスビット数の統一性を確保する。このようにして、作業員がライブラリ関数を作成するすべてのコンパイラを第1アドレスビット数にアップグレードする必要もなく、作業員にかかる負担を軽減し、後続プロジェクトの開発を加速することができる。
【0008】
上記第1の形態による技術案では、いくつかの実現可能な方式において、前記ライブラリ関数におけるすべての命令をスキャンする前に、前記方法は、前記ライブラリ関数におけるそれぞれのレジスタにそれぞれ1つの命令で値を代入するように、前記ライブラリ関数に対応するレジスタをリネームするステップをさらに含む。
【0009】
本出願の実施形態において、ライブラリ関数におけるすべての命令をスキャンする前に、ライブラリ関数におけるそれぞれのレジスタにそれぞれ1つの命令で値を代入するように、まず、ライブラリ関数に対応するレジスタをリネームする。リネームにより、その後レジスタのビット数を上げる際に混乱してライブラリ関数のリンクに影響を及ぼすことを防ぐ。
【0010】
上記第1の形態による技術案では、いくつかの実現可能な方式において、ライブラリ関数のアドレス操作命令が予め作成したマッピングテーブルにある場合、前記ライブラリ関数のアドレス操作命令におけるレジスタアドレスを変更する前に、前記方法は、前記ライブラリ関数におけるすべての命令をスキャンし、アドレス操作命令である前記第1操作命令を特定するステップと、前記第1操作命令におけるレジスタアドレスを前記マッピングテーブルとマッチングするステップとをさらに含む。
【0011】
本出願の実施形態において、まず、ライブラリ関数のすべての命令をスキャンし、命令がアドレス操作命令である場合のみ、マッピングテーブルとマッチングする動作を行う。これにより、リンク効率を向上させることができる。
【0012】
上記第1の形態による技術案では、いくつかの実現可能な方式において、前記ライブラリ関数におけるすべての命令をスキャンする前に、前記方法は、第2アドレスビット数である、呼び出されたライブラリ関数に入力パラメータを提供するための宛先レジスタアドレスと、ソースレジスタアドレスとを含む前記メインプログラムのパラメータ伝送命令を取得するステップと、前記宛先レジスタアドレスを第1アドレスビット数に上げるとともに、前記呼び出されたライブラリ関数の、その自身の入力パラメータのアドレスであるレジスタアドレスと関連付けるステップと、ビット数が上げられた前記宛先レジスタアドレスと前記呼び出されたライブラリ関数のレジスタアドレスに基づいて前記マッピングテーブルを構築するステップと、をさらに含む。
【0013】
本出願の実施形態において、すべてのレジスタアドレスのマッピング関係を含むマッピングテーブルを構築することなく、メインプログラムのパラメータ伝送命令に基づいてパラメータレジスタアドレスのビット数を変更し、所望のマッピングテーブルを動的に作成する。これにより、リンク効率を向上させる。
【0014】
上記第1の形態による技術案では、いくつかの実現可能な方式において、前記メインプログラムのパラメータ伝送命令を取得する前に、前記方法は、第1アドレスビット数のコンパイラにより、第1アドレスビット数のメインプログラムのソースコードを前記メインプログラムにコンパイルするステップと、第2アドレスビット数のコンパイラにより、第2アドレスビット数のライブラリ関数のソースコードを前記ライブラリ関数にコンパイルするステップとをさらに含む。
【0015】
本出願の実施形態において、第1アドレスビット数のコンパイラによりメインプログラムのソースコードをコンパイルし、第2アドレスビット数のコンパイラによりライブラリ関数のソースコードをコンパイルすることができるため、作業員がライブラリ関数を作成するすべてのコンパイラを第1アドレスビット数にアップグレードする必要もなく、作業員にかかる負担を軽減し、後続プロジェクトの開発を加速することができる。
【0016】
上記第1の形態による技術案では、いくつかの実現可能な方式において、前記マッピングテーブルにあるレジスタアドレスおよび前記マッピングテーブルにないレジスタアドレスが前記第1操作命令に存在する場合、前記方法は、前記マッピングテーブルにないレジスタアドレスに対応するメインプログラムの宛先レジスタを符号拡張により第1アドレスビット数に上げ、前記マッピングテーブルを更新するステップと、更新されたマッピングテーブルに基づいて前記第1操作命令におけるレジスタアドレスを変更するステップとをさらに含む。
【0017】
本出願の実施形態において、マッピングテーブルにあるレジスタアドレスおよびマッピングテーブルにないレジスタアドレスが第1操作命令に存在する場合、マッピングテーブルにないレジスタアドレスに対応するメインプログラムの宛先レジスタを符号拡張により第1アドレスビット数に上げ、マッピングテーブルを更新する。これにより、ライブラリ関数をリンクする過程においてマッピングテーブルの更新を実現し、ライブラリ関数をメインプログラムにリンクする際の正確性とアドレスビット数の統一性を確保することができる。
【0018】
上記第1の形態による技術案では、いくつかの実現可能な方式において、前記第1操作命令は、ロード命令、ストア命令、演算命令のうちのいずれか一種を含む。
【0019】
第2の形態において、本出願の実施形態は、クロスリンク装置を提供する。クロスリンク装置は、ライブラリ関数の第1操作命令におけるレジスタアドレスが予め作成したマッピングテーブルにある場合、前記第1操作命令におけるレジスタアドレスを変更する処理モジュールと、前記変更された第1操作命令をメインプログラムにリンクするリンクモジュールとを含み、前記マッピングテーブルは、前記メインプログラムの宛先レジスタアドレスと前記ライブラリ関数のレジスタアドレスとのマッピング関係を含み、前記メインプログラムの宛先レジスタアドレスが第1アドレスビット数に上げられ、前記ライブラリ関数の操作命令におけるレジスタアドレスが第2アドレスビット数であり、変更された第1操作命令におけるレジスタアドレスが前記マッピングテーブルにおける対応するメインプログラムの宛先レジスタアドレスである。
【0020】
上記第2の形態による技術案では、いくつかの実現可能な方式において、前記装置は、前記ライブラリ関数におけるすべての命令をスキャンする前に、前記ライブラリ関数におけるそれぞれのレジスタにそれぞれ1つの命令で値を代入するように、前記ライブラリ関数に対応するレジスタをリネームするリネームモジュールをさらに含む。
【0021】
上記第2の形態による技術案では、いくつかの実現可能な方式において、前記装置は、ライブラリ関数のアドレス操作命令が予め作成したマッピングテーブルにある場合、前記ライブラリ関数のアドレス操作命令におけるレジスタアドレスを変更する前に、前記ライブラリ関数におけるすべての命令をスキャンし、アドレス操作命令である前記第1操作命令を特定し、前記第1操作命令におけるレジスタアドレスを前記マッピングテーブルとマッチングするマッチングモジュールをさらに含む。
【0022】
上記第2の形態による技術案では、いくつかの実現可能な方式において、前記装置は、前記ライブラリ関数におけるすべての命令をスキャンする前に、第2アドレスビット数である、呼び出されたライブラリ関数に入力パラメータを提供するための宛先レジスタアドレスと、ソースレジスタアドレスとを含む前記メインプログラムのパラメータ伝送命令を取得し、前記宛先レジスタアドレスを第1アドレスビット数に上げるとともに、前記呼び出されたライブラリ関数の、その自身の入力パラメータのアドレスであるレジスタアドレスと関連付け、ビット数が上げられた前記宛先レジスタアドレスと前記呼び出されたライブラリ関数のレジスタアドレスに基づいて前記マッピングテーブルを構築する構築モジュールをさらに含む。
【0023】
上記第2の形態による技術案では、いくつかの実現可能な方式において、前記装置は、前記メインプログラムのパラメータ伝送命令を取得する前に、第1アドレスビット数のコンパイラにより、第1アドレスビット数のメインプログラムのソースコードを前記メインプログラムにコンパイルし、第2アドレスビット数のコンパイラにより、第2アドレスビット数のライブラリ関数のソースコードを前記ライブラリ関数にコンパイルするコンパイルモジュールをさらに含む。
【0024】
上記第2の形態による技術案では、いくつかの実現可能な方式において、前記装置は、前記マッピングテーブルにあるレジスタアドレスおよび前記マッピングテーブルにないレジスタアドレスが前記第1操作命令に存在する場合、前記マッピングテーブルにないレジスタアドレスに対応するメインプログラムの宛先レジスタを符号拡張により第1アドレスビット数に上げ、前記マッピングテーブルを更新し、更新されたマッピングテーブルに基づいて前記第1操作命令におけるレジスタアドレスを変更する更新モジュールをさらに含む。
【0025】
上記第2の形態による技術案では、いくつかの実現可能な方式において、前記第1操作命令は、ロード命令、ストア命令、演算命令のうちのいずれか一種を含む。
【0026】
第3の形態において、本出願の実施形態は、電子機器を提供する。電子機器は、プロセッサと、前記プロセッサに接続され、前記プロセッサに呼び出されて上記第1の形態の実施形態および/または上記第1の形態の実施形態に関連するいくつかの実現可能な方式による方法を実行させるプログラムを記憶しているメモリと、を含む。
【0027】
第4の形態において、本出願の実施形態は、コンピュータ読取可能な記憶媒体を提供する。コンピュータ読取可能な記憶媒体は、プロセッサに実行されると、上記第1の形態の実施形態および/または上記第1の形態の実施形態に関連するいくつかの実現可能な方式による方法を実行させるコンピュータプログラムを記憶している。
【図面の簡単な説明】
【0028】
本出願の実施形態の技術案をより明瞭に説明するために、以下、本出願の実施形態の説明に必要な図面を簡単に説明する。以下の図面は、本出願の一部の実施形態を示すものにすぎず、範囲を限定するものではない。当業者は、発明能力を用いなくても、これらの図面に基づいて他の関連図面を得ることが可能である。
【0029】
図1図1は、本出願の実施形態による電子機器のモジュールのブロック図である。
図2図2は、本出願の実施形態によるクロスリンク方法のフローチャートである。
図3図3は、本出願の実施形態によるクロスリンクのフローチャートである。
図4図4は、本出願の実施形態によるクロスリンク装置のモジュールのブロック図である。
【発明を実施するための形態】
【0030】
以下、本出願の実施形態の図面を参照しながら、本出願の実施形態に係る技術案を説明する。
【0031】
図1を参照し、図1は、本出願の実施形態によるクロスリンク方法および装置を用いた電子機器100の模式的構造ブロック図である。本出願の実施形態において、電子機器100は、端末またはサーバであってもよい。端末は、パーソナルコンピュータ(Personal Computer、PC)、スマートフォン、タブレット、パーソナルデジタルアシスタント(Personal Digital Assistant、PDA)、モバイルインターネットデバイス(Mobile Internet Device、MID)などであってもよいが、これらに限定されない。サーバは、ネットワークサーバ、データベースサーバ、クラウドサーバまたは複数のサブサーバからなるサーバ統合装置などであってもよいが、これらに限定されない。もちろん、上記に挙げた装置は、本出願の実施形態を容易に理解させるためのものにすぎず、本実施形態を限定するものではない。
【0032】
電子機器100は、構成として、プロセッサ110とメモリ120とを含んでいてもよい。
【0033】
プロセッサ110は、データの伝送や通信のために、メモリ120と直接または間接的に電気的に接続される。例えば、これらの素子は、1つまたは複数の通信バスまたは信号線を介して互いに電気的に接続されてもよい。クロスリンク装置は、メモリ120にソフトウェアとして記憶されるか、または電子機器100のオペレーティングシステム(Operating System、OS)にファームウェア(Firmware)として組み込まれることができるソフトウェアモジュールを少なくとも1つ含む。プロセッサ110は、メモリ120に記憶される、クロスリンク装置に含まれるソフトウェア機能モジュールやコンピュータプログラムなどの実行可能なモジュールを実行し、クロスリンク方法を実現させる。プロセッサ110は、実行命令を受信すると、コンピュータプログラムを実行することができる。
【0034】
本出願の実施形態において、プロセッサ110は、画像処理装置(Graphics Processing Unit、GPU)である。画像処理装置に配置されているコンパイラは、GLSL(OpenGL Shading Language、シェーディング言語)、HLSL(High Level Shader Language、高レベルシェーディング言語)などのシェーディング用の高級言語をサポートするとともに、OpenCL(Open Computing Language、オープンシーエル)、CUDA(Compute Unified Device Architecture、並列コンピューティングのためのプラットフォーム)などの計算用の汎用高級言語もサポートし、また、DXIL、SPIR-Vなどのバイナリの中間コードの表現もサポートする。
【0035】
もちろん、プロセッサ110は、信号処理能力を有する集積回路チップであってもよい。プロセッサ110は、中央処理装置(Central Processing Unit、CPU)のような汎用プロセッサ、デジタルシグナルプロセッサ(Digital Signal Processor、DSP)、特定用途向け集積回路(Application Specific Integrated Circuit 、ASIC)、ディスクリートゲート又はトランジスタ論理デバイス、ディスクリートハードウェアコンポーネントであってもよく、本出願の実施形態に開示される各方法、ステップ及び論理ブロック図を実現又は実行可能である。なお、汎用プロセッサは、マイクロプロセッサ又は如何なる従来のプロセッサなどであってもよい。
【0036】
メモリ120は、ランダムアクセスメモリ(Random Access Memory、RAM)、リードオンリーメモリ(Read Only Memory、ROM)、プログラマブル読み出し専用メモリ(Programmable Read-Only Memory、PROM)、消去可能なプログラマブル読み出し専用メモリ(Erasable Programmable Read-Only Memory、EPROM)、および電気的に消去可能なプログラマブル読み出し専用メモリ(Electric Erasable Programmable Read-Only Memory、EEPROM)であってもよいが、これらに限定されない。メモリ120は、実行命令を受信したプロセッサ110により実行されるプログラムを記憶している。
【0037】
また、図1に示す構造は例示的なものにすぎず、本出願の実施形態による電子機器100は、図1より少ないまたは多い部品を有してもよく、あるいは図1と異なる構成であってもよい。なお、図1に示す各部品は、ソフトウェア、ハードウェアまたはこれらの組み合わせにより実現されることが可能である。
【0038】
図2は、本出願の実施形態によるクロスリンク方法のフローチャートであり、図2に示すように、この方法が図1に示す電子機器100に用いられる。また、本出願の実施形態によるクロスリンク方法は、ステップS101~ステップS102を含むが、図2および以下に示す順番に限定されない。
【0039】
ステップS101:ライブラリ関数の第1操作命令におけるレジスタアドレスが予め作成したマッピングテーブルにある場合、第1操作命令におけるレジスタアドレスを変更する。
【0040】
マッピングテーブルは、メインプログラムの宛先レジスタアドレスとライブラリ関数のレジスタアドレスとのマッピング関係を含む。メインプログラムの宛先レジスタアドレスが第1アドレスビット数に上げられ、ライブラリ関数の操作命令におけるレジスタアドレスが第2アドレスビット数である。変更された第1操作命令におけるレジスタアドレスは、マッピングテーブルにおける対応するメインプログラムの宛先レジスタアドレスである。
【0041】
また、第1アドレスビット数は、第2アドレスビット数よりも大きく、第1アドレスビット数がメインプログラムのソースコードにより特定され、第2アドレスビット数がライブラリ関数のソースコードのアドレスビット数により特定される。例えば、メインプログラムのソースコードは64ビットであれば、第1アドレスビット数が64ビットとなり、ライブラリ関数のソースコードのアドレスビット数は32ビットであれば、第2アドレスビット数が32ビットとなる。もちろん、他の実施形態において、第1アドレスビット数が32ビット、第2アドレスビット数が16ビットであってもよいし、第1アドレスビット数が128ビット、第2アドレスビット数が64ビットであってもよいし、第1アドレス数が64ビット、第2アドレスビット数が16ビットであってもよく、本出願では限定されない。理解を容易にするために、以下の例では、いずれも、第1アドレスビット数を64ビット、第2アドレスビット数を32ビットとして説明する。
【0042】
上記「マッピングテーブルにある」とは、ライブラリ関数の第1操作命令におけるレジスタアドレスが、マッピングテーブルにおけるレジスタアドレスのいずれかと同じであると理解できる。
【0043】
1つの実施形態として、ステップS101の前に、この方法は、ライブラリ関数におけるすべての命令をスキャンし、アドレス操作命令である第1操作命令を特定し、第1操作命令におけるレジスタアドレスをマッピングテーブルとマッチングするステップをさらに含む。
【0044】
上記の第1操作命令は、ロード命令(load)、ストア命令(store)、演算命令のうちのいずれか一種を含む。
【0045】
演算命令は、加算命令(add)、減算命令(sub)、乗算命令(mul)、除算命令(div)を含むが、これらに限定されない。
【0046】
本出願の実施形態において、まず、ライブラリ関数におけるすべての命令をスキャンし、命令がアドレス操作命令である場合のみ、マッピングテーブルとマッチングする動作を行う。これにより、リンク効率を向上させることができる。
【0047】
もちろん、第1命令は、ライブラリ関数におけるすべての命令であってもよく、本出願では限定されない。
【0048】
任意で、上記のライブラリ関数におけるすべての命令をスキャンする動作を実行する前に、この方法は、ライブラリ関数におけるそれぞれのレジスタにそれぞれ1つの命令で値を代入するように、ライブラリ関数に対応するレジスタをリネームするステップをさらに含む。
【0049】
例示的に、以下のようになる。
【0050】
001:uadd uint32 temp(1079),uint32 temp(1067),uint32 temp(1069);
・・・
007:uadd uint32 temp(1079),uint32 temp(1068),10。
【0051】
そのうち、001と007は、ライブラリ関数における2つの加算命令を表す。uint32が32ビット整数型、temp(*)がレジスタを表す。例えば、temp(1079)が1079番のレジスタを表す。命令001と命令007において、いずれもtemp(1079)に値を一度代入した。その後レジスタのビット数を上げる際に、同じレジスタを一部の命令で64ビットに上げる必要があるに対して、他の一部の命令(例えば:アドレス操作命令以外の命令)では上げる必要がないというような混乱を避けるために、temp(1079)を未使用の新しいレジスタtemp(1267)にリネームすることができる。すると、上記命令は以下のようになる。
【0052】
001:uadd uint32 temp(1079),uint32 temp(1067),uint32 temp(1069)
・・・
007:uadd uint32 temp(1267),uint32 temp(1068),10
【0053】
よって、本出願の実施形態において、ライブラリ関数におけるすべての命令をスキャンする前に、ライブラリ関数におけるそれぞれのレジスタにそれぞれ1つの命令で値を代入するように、まず、ライブラリ関数に対応するレジスタをリネームする。リネームにより、その後レジスタのビット数を上げる際に混乱することを防ぐ。
【0054】
任意で、上記のライブラリ関数におけるすべての命令をスキャンする動作を実行する前に、この方法は、メインプログラムのパラメータ伝送命令を取得するステップと、パラメータ伝送命令における宛先レジスタアドレスを第1アドレスビット数に上げるとともに、呼び出されたライブラリ関数のレジスタアドレスと関連付けるステップと、ビット数が上げられた宛先レジスタアドレスと呼び出されたライブラリ関数のレジスタアドレスに基づいてマッピングテーブルを構築するステップと、を含む。
【0055】
パラメータ伝送命令は、宛先レジスタアドレスと、ソースレジスタアドレスとを含む。
【0056】
宛先レジスタアドレスは、もともと第2アドレスビット数である。宛先レジスタアドレスは、呼び出されたライブラリ関数に入力パラメータを提供するためのアドレスである。呼び出されたライブラリ関数のレジスタアドレスは、呼び出されたライブラリ関数自身の入力パラメータのアドレスである。
【0057】
例示的に、以下のようになる。
【0058】
movparam uint32 temp(66) uint64 temp(34)
【0059】
上記命令は、メインプログラムのパラメータ伝送命令である。uint64は64ビット整数型を表す。この命令は、34番のレジスタの値を66番のレジスタに代入することを意味する。temp(34)はソースレジスタアドレスであり、temp(34)のオペランドはソースオペランドである。temp(66)は宛先レジスタアドレスであり、temp(66)のオペランドはデスティネーションオペランドである。temp(66)は、呼び出されたライブラリ関数に入力パラメータを提供するためのアドレスである。
【0060】
メインプログラムが64ビットであるため、ここで命令のデスティネーションオペランドを変更し、それを64ビットに上げる。変更された命令は以下のとおりである。
【0061】
movparam uint64 temp(66) uint64 temp(34)
【0062】
よって、宛先レジスタアドレスtemp(66)が、32ビットから64ビットに上げられた。
【0063】
例示的に、呼び出されたライブラリ関数の、この入力パラメータのアドレスに対応するレジスタアドレスは、uint32 temp(1067)である。すなわち、uint32 temp(1067)は、呼び出されたライブラリ関数のレジスタアドレスでもあり、呼び出されたライブラリ関数自身の入力パラメータのアドレスでもある。
【0064】
そして、ビット数が上げられた宛先レジスタアドレスを呼び出されたライブラリ関数のレジスタアドレスと関連付け、マッピングテーブルを構築する。
【0065】
マッピングテーブルにおいて、ビット数が上げられた宛先レジスタアドレスと、呼び出されたライブラリ関数のレジスタアドレスとのマッピング関係は以下のとおりである。
【0066】
uint32 temp(1067) <―> uint64 temp(66)
【0067】
また、メインプログラムにおける命令がアドレス操作命令以外の命令である場合、通常のリンク方式でリンクすればよい。
【0068】
本出願の実施形態において、すべてのレジスタアドレスのマッピング関係を含むマッピングテーブルを構築することなく、メインプログラムのパラメータ伝送命令に基づいてパラメータレジスタアドレスのビット数を変更し、所望のマッピングテーブルを動的に作成する。これにより、リンク効率を向上させる。
【0069】
任意で、メインプログラムのパラメータ伝送命令を取得する前に、この方法は、第1アドレスビット数のコンパイラにより、第1アドレスビット数のメインプログラムのソースコードをメインプログラムにコンパイルするステップと、第2アドレスビット数のコンパイラにより、第2アドレスビット数のライブラリ関数のソースコードをライブラリ関数にコンパイルするステップとをさらに含む。
【0070】
例示的に、64ビットのコンパイラにより、64ビットのメインプログラムのソースコードをメインプログラムにコンパイルし、32ビットのコンパイラにより、32ビットのライブラリ関数のソースコードをライブラリ関数にコンパイルすることができる。
【0071】
また、上記実施形態におけるメインプログラムおよびライブラリ関数は、いずれも中水準中間コード(middle level intermediate code)である。リンクする前に、コンパイラによりソースコードをコンパイルする必要がある。本出願の実施形態において、第1アドレスビット数のコンパイラによりメインプログラムのソースコードをコンパイルし、第2アドレスビット数のコンパイラによりライブラリ関数のソースコードをコンパイルすることができるため、作業員がライブラリ関数を作成するすべてのコンパイラを第1アドレスビット数にアップグレードする必要がない。
【0072】
テーブルを予め構築し、ライブラリ関数の第1操作命令を特定した後、第1操作命令におけるレジスタアドレスをマッピングテーブルとマッチングする。以下、具体的な例を参照しながら説明する。第1操作命令は、以下のようなロード命令である。
【0073】
load float32 temp(1079),uint32 temp(1067),0
【0074】
マッピングテーブルを検索し、uint32 temp(1067)がメインプログラムのuint64 temp(66)にマップされ、メインプログラムのtemp(66)のビット数が64ビットに上げられた。この場合、この操作命令をメインプログラムにリンクする際に、64ビットに上げる必要があることを表す。ここで、第1操作命令を変更し、変更された第1操作命令は以下のとおりである。
【0075】
load float32 temp(1079),uint64 temp(66),0。
【0076】
一実施形態において、マッピングテーブルにあるレジスタアドレスおよびマッピングテーブルにないレジスタアドレスが第1操作命令に存在する場合、この方法は、マッピングテーブルにないレジスタアドレスに対応するメインプログラムの宛先レジスタを符号拡張により第1アドレスビット数に上げ、マッピングテーブルを更新するステップと、更新されたマッピングテーブルに基づいて第1操作命令におけるレジスタアドレスを変更するステップとをさらに含む。
【0077】
具体的に、第1操作命令に複数のレジスタアドレスが存在するとき、一部のレジスタアドレスがマッピングテーブルにあり、もう一部のレジスタアドレスがマッピングテーブルにない場合がある。アドレスビット数を統一するために、もう一部のレジスタアドレスに対応するメインプログラムの宛先レジスタのみを第1アドレスビット数に上げ、マッピングテーブルを更新する。最後に、更新されたマッピングテーブルに基づいて第1操作命令におけるレジスタアドレスを変更する。
【0078】
符号拡張の方法は、本分野の公知常識であるため、ここで説明を省略する。
【0079】
以下、具体的な例を参照しながら説明する。第1操作命令は、以下のような加算命令である。
【0080】
uadd uint32 temp(1079),uint32 temp(1067),uint32 temp(1069)
【0081】
マッピングテーブルを検索し、uint32 temp(1067)がマッピングテーブルにあり、メインプログラムのuint64 temp(66)に対応するが、uint32 temp(1079)とuint32 temp(1069)がマッピングテーブルにない。そのため、アドレスビット数を統一するため、uint32 temp(1079)およびuint32 temp(1069)に対応するメインプログラムの宛先レジスタを64ビットに上げ、マッピングテーブルを更新する。
【0082】
更新されたマッピングテーブルは、以下のマッピング関係を含む。
【0083】
uint32 temp(1067) <―> uint64 temp(66)
uint32 temp(1079) <―> uint64 temp(78)
uint32 temp(1069) <―> uint64 temp(69)
【0084】
最後に、更新されたマッピングテーブルに基づいて第1操作命令におけるレジスタアドレスを変更する。変更された第1操作命令は以下のとおりである。
【0085】
uadd uint64 temp(78),uint64 temp(66),uint64 temp(69)
【0086】
本出願の実施形態において、マッピングテーブルにあるレジスタアドレスおよびマッピングテーブルにないレジスタアドレスが第1操作命令に存在する場合、マッピングテーブルにないレジスタアドレスに対応するメインプログラムの宛先レジスタを符号拡張により第1アドレスビット数に上げ、マッピングテーブルを更新する。以上により、ライブラリ関数をリンクする過程においてマッピングテーブルの更新を実現し、ライブラリ関数をメインプログラムにリンクする際の正確性とアドレスビット数の統一性を確保することができる。
【0087】
他の実施形態において、シンボルテーブルにおける符号のマッピング関係により、上記のビット数を上げることも可能であり、本出願は限定されない。
【0088】
ステップS102:変更された第1操作命令をメインプログラムにリンクする。
【0089】
最後に、変更された第1操作命令をメインプログラムにリンクする。リンクされたメインプログラムは、その後の機種非依存の最適化と機種依存の最適化を行い、実行可能コード、つまり機械語を作成する。
【0090】
以下、具体的な例を参照しながら上記クロスリンク方法を説明する。図3に示すように、電子機器は、64ビットのメインプログラムのソースコードおよび32ビットのライブラリ関数のソースコードを取得してから、まずコンパイルする。すなわち、64ビットのコンパイラにより、64ビットのメインプログラムのソースコードをメインプログラムにコンパイルし、32ビットのコンパイラにより、32ビットのライブラリ関数のソースコードをライブラリ関数にコンパイルする。そして、メインプログラムとライブラリ関数をリンクする。まず、メインプログラムのパラメータ伝送命令を取得する。パラメータ伝送命令は、宛先レジスタアドレスと、ソースレジスタアドレスとを含む。宛先レジスタアドレスは、32ビットであり、呼び出されたライブラリ関数に入力パラメータを提供するためのアドレスである。宛先レジスタアドレスを64ビットに上げ、呼び出されたライブラリ関数のレジスタアドレスと関連付ける。呼び出されたライブラリ関数のレジスタアドレスは、呼び出されたライブラリ関数自身の入力パラメータのアドレスである。ビット数が上げられた宛先レジスタアドレスと前記呼び出されたライブラリ関数のレジスタアドレスに基づいてマッピングテーブルを構築する。そして、ライブラリ関数におけるそれぞれのレジスタにそれぞれ1つの命令で値を代入するように、ライブラリ関数に対応するレジスタをリネームする。その後、ライブラリ関数におけるすべての命令をスキャンし、アドレス操作命令である第1操作命令を特定し、第1操作命令におけるレジスタアドレスをマッピングテーブルとマッチングする。ライブラリ関数の第1操作命令におけるレジスタアドレスが予め作成したマッピングテーブルにある場合、第1操作命令におけるレジスタアドレスを変更する。変更された第1操作命令におけるレジスタアドレスは、マッピングテーブルにおける対応するメインプログラムの宛先レジスタアドレスである。最後に、変更された第1操作命令をメインプログラムにリンクして実行可能コードを得る。
【0091】
以上のように、本出願の実施形態において、ライブラリ関数の操作命令をメインプログラムにリンクする前に、予め作成したマッピングテーブルを検索し、第1操作命令におけるレジスタアドレスが予め作成したマッピングテーブルにある場合、マッピングテーブルのマッピング関係にしたがい第1操作命令におけるレジスタアドレスを変更し(つまり、第1アドレスビット数に上げる)、変更された第1操作命令をメインプログラムにリンクする。これによって、ライブラリ関数をメインプログラムにリンクする際の正確性とアドレスビット数の統一性を確保する。このようにして、作業員がライブラリ関数を作成するすべてのコンパイラを第1アドレスビット数にアップグレードする必要もなく、作業員にかかる負担を軽減し、後続プロジェクトの開発を加速させることができる。
【0092】
図4に示すように、同じ発明の思想に基づき、本出願の実施形態は、クロスリンク装置200をさらに提供し、この装置は、処理モジュール210とリンクモジュール220とを含む。
【0093】
処理モジュール210は、ライブラリ関数の第1操作命令におけるレジスタアドレスが予め作成したマッピングテーブルにある場合、前記第1操作命令におけるレジスタアドレスを変更する。前記マッピングテーブルは前記メインプログラムの宛先レジスタアドレスと前記ライブラリ関数のレジスタアドレスとのマッピング関係を含み、前記メインプログラムの宛先レジスタアドレスが第1アドレスビット数に上げられ、前記ライブラリ関数の操作命令におけるレジスタアドレスが第2アドレスビット数であり、第1アドレスビット数は第2アドレスビット数より大きく、変更された第1操作命令におけるレジスタアドレスは前記マッピングテーブルにおける対応するメインプログラムの宛先レジスタアドレスである。
【0094】
リンクモジュール220は、前記変更された第1操作命令をメインプログラムにリンクする。
【0095】
任意で、この装置は、マッチングモジュールをさらに含む。
【0096】
マッチングモジュールは、ライブラリ関数のアドレス操作命令が予め作成したマッピングテーブルにある場合、前記ライブラリ関数のアドレス操作命令におけるレジスタアドレスを変更する前に、前記ライブラリ関数におけるすべての命令をスキャンし、アドレス操作命令である前記第1操作命令を特定し、前記第1操作命令におけるレジスタアドレスを前記マッピングテーブルとマッチングする。
【0097】
任意で、この装置は、リネームモジュールをさらに含む。
【0098】
リネームモジュールは、前記ライブラリ関数におけるすべての命令をスキャンする前に、前記ライブラリ関数におけるそれぞれのレジスタにそれぞれ1つの命令で値を代入するように、前記ライブラリ関数に対応するレジスタをリネームする。
【0099】
任意で、この装置は、構築モジュールをさらに含む。
【0100】
構築モジュールは、前記ライブラリ関数におけるすべての命令をスキャンする前に、前記メインプログラムのパラメータ伝送命令を取得し、宛先レジスタアドレスを第1アドレスビット数に上げるとともに、呼び出されたライブラリ関数のレジスタアドレスと関連付け、ビット数が上げられた前記宛先レジスタアドレスと前記呼び出されたライブラリ関数のレジスタアドレスに基づいて前記マッピングテーブルを構築する。前記パラメータ伝送命令は、第2アドレスビット数の前記宛先レジスタアドレスと、ソースレジスタアドレスとを含み、前記宛先レジスタアドレスが前記呼び出されたライブラリ関数に入力パラメータを提供するためのアドレスであり、前記呼び出されたライブラリ関数のレジスタアドレスが、前記呼び出されたライブラリ関数自身の入力パラメータのアドレスである。
【0101】
任意で、この装置は、コンパイルモジュールをさらに含む。
【0102】
コンパイルモジュールは、前記メインプログラムのパラメータ伝送命令を取得する前に、第1アドレスビット数のコンパイラにより、第1アドレスビット数のメインプログラムのソースコードを前記メインプログラムにコンパイルし、第2アドレスビット数のコンパイラにより、第2アドレスビット数のライブラリ関数のソースコードを前記ライブラリ関数にコンパイルする。
【0103】
任意で、この装置は、更新モジュールをさらに含む。
【0104】
更新モジュールは、前記マッピングテーブルにあるレジスタアドレスおよび前記マッピングテーブルにないレジスタアドレスが前記第1操作命令に存在する場合、前記マッピングテーブルにないレジスタアドレスに対応するメインプログラムの宛先レジスタを符号拡張により第1アドレスビット数に上げ、前記マッピングテーブルを更新し、更新されたマッピングテーブルに基づいて前記第1操作命令におけるレジスタアドレスを変更する。
【0105】
なお、以上説明したシステム、装置、ユニットの作業プロセスについて、当業者は、上記方法の実施形態における該当するプロセスを参照できるため、説明の便宜及び簡潔のために、ここで説明を省略する。
【0106】
同じ発明思想に基づき、本出願の実施形態は、実行されるとき上記実施形態による方法を実行するコンピュータプログラムを記憶しているコンピュータ読取可能な記憶媒体をさらに提供する。
【0107】
この記憶媒体は、コンピュータによってアクセスできる任意の利用可能な媒体、または1つ以上の利用可能な媒体を集積して形成されたサーバ、データセンターなどのデータ記憶装置であってもよい。前記利用可能な媒体は、磁気媒体(例えばフロッピーディスク、ハードディスク、磁気テープ)、光学媒体(例えばDVD)、または半導体媒体(例えばソリッドステートドライブ:Solid State Disk(SSD))等であってもよい。
【0108】
本出願による実施形態において、記載された装置及び方法は、他の方式により実現することが可能である。上記に説明された装置の実施形態は、例示的なものにすぎない。例えば、前記のユニットの区分は、単に論理的な機能区分であり、実際の実現では別の区分であってもよい。例えば、複数のユニット又はコンポーネントを組み合わせ、又は別のシステムに統合してもよく、或いは一部の特徴を省略又は不実行にしてもよい。また、示したもしくは論じた相互結合又は直接結合又は通信接続は、いくつかのインターフェース、装置又はユニットを介する間接結合又は通信接続であってもよく、また、電気的、機械的又は他の形式による接続であってもよい。
【0109】
また、別個の部品として説明されたユニットは、物理的に別個であってもなくてもよい。ユニットとして示した部材は、物理的なユニットであってもなくてもよく、つまり、同一位置に配置してもよく、複数のネットワークユニットに分散してもよい。本実施形態の案の目的を達成するために実際の要求に応じて一部又は全部のユニットを選択することが可能である。
【0110】
なお、本出願の各実施形態に係る各機能モジュールは、集積して形成された1つの独立部分であってもよく、単独の各モジュールであってもよく、2つ以上のモジュールにより集積して形成された1つの独立部分であってもよい。
【0111】
本明細書において、第1及び第2などのような関係用語は、1つのエンティティ若しくはアクションを別のエンティティ若しくはアクションから、必ずしもそのようなエンティティ若しくはアクション間に如何なる事実上のそのような関係又は順序も要求又は暗示することなく、区別するためだけに用いられることができる。
【0112】
以上は本出願の実施形態にすぎず、本出願の保護範囲を限定するものではない。当業者は、本出願に対して改良または変更をすることができる。本出願の主旨から逸脱せずになされた変更、均等置換または改良などは、いずれも本出願の保護範囲に属する。
【符号の説明】
【0113】
100…電子機器
110…プロセッサ
120…メモリ
200…クロスリンク装置
210…処理モジュール
220…リンクモジュール
図1
図2
図3
図4
【手続補正書】
【提出日】2023-09-12
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
ライブラリ関数の第1操作命令におけるレジスタアドレスが予め作成したマッピングテーブルにある場合、前記第1操作命令におけるレジスタアドレスを変更するステップと、
前記変更された第1操作命令をメインプログラムにリンクするステップとを含み、
前記マッピングテーブルは、前記メインプログラムの宛先レジスタアドレスと前記ライブラリ関数のレジスタアドレスとのマッピング関係を含み、前記メインプログラムの宛先レジスタアドレスが第1アドレスビット数に上げられ、前記ライブラリ関数の操作命令におけるレジスタアドレスが第2アドレスビット数であり、第1アドレスビット数が第2アドレスビット数よりも大きく、変更された第1操作命令におけるレジスタアドレスが前記マッピングテーブルにおける対応するメインプログラムの宛先レジスタアドレスである
ことを特徴とするクロスリンク方法。
【請求項2】
前記ライブラリ関数におけるすべての命令をスキャンする前に、
前記ライブラリ関数におけるそれぞれのレジスタにそれぞれ1つの命令で値を代入するように、前記ライブラリ関数に対応するレジスタをリネームするステップをさらに含む
ことを特徴とする請求項1に記載の方法。
【請求項3】
ライブラリ関数のアドレス操作命令が予め作成したマッピングテーブルにある場合、前記ライブラリ関数のアドレス操作命令におけるレジスタアドレスを変更する前に、
前記ライブラリ関数におけるすべての命令をスキャンし、アドレス操作命令である前記第1操作命令を特定するステップと、
前記第1操作命令におけるレジスタアドレスを前記マッピングテーブルとマッチングするステップとをさらに含む
ことを特徴とする請求項1に記載の方法。
【請求項4】
前記ライブラリ関数におけるすべての命令をスキャンする前に、
第2アドレスビット数である、呼び出されたライブラリ関数に入力パラメータを提供するための宛先レジスタアドレスと、ソースレジスタアドレスとを含む前記メインプログラムのパラメータ伝送命令を取得するステップと、
前記宛先レジスタアドレスを第1アドレスビット数に上げるとともに、前記呼び出されたライブラリ関数の、その自身の入力パラメータのアドレスであるレジスタアドレスと関連付けるステップと、
ビット数が上げられた前記宛先レジスタアドレスと前記呼び出されたライブラリ関数のレジスタアドレスに基づいて前記マッピングテーブルを構築するステップと、をさらに含む
ことを特徴とする請求項3に記載の方法。
【請求項5】
前記メインプログラムのパラメータ伝送命令を取得する前に、
第1アドレスビット数のコンパイラにより、第1アドレスビット数のメインプログラムのソースコードを前記メインプログラムにコンパイルするステップと、
第2アドレスビット数のコンパイラにより、第2アドレスビット数のライブラリ関数のソースコードを前記ライブラリ関数にコンパイルするステップと、をさらに含む
ことを特徴とする請求項4に記載の方法。
【請求項6】
前記マッピングテーブルにあるレジスタアドレスおよび前記マッピングテーブルにないレジスタアドレスが前記第1操作命令に存在する場合、
前記マッピングテーブルにないレジスタアドレスに対応するメインプログラムの宛先レジスタを符号拡張により第1アドレスビット数に上げ、前記マッピングテーブルを更新するステップと、
更新されたマッピングテーブルに基づいて前記第1操作命令におけるレジスタアドレスを変更するステップとをさらに含む
ことを特徴とする請求項1に記載の方法。
【請求項7】
前記第1操作命令は、ロード命令、ストア命令、演算命令のうちのいずれか一種を含むことを特徴とする請求項1~6のいずれか一項に記載の方法。
【請求項8】
ライブラリ関数の第1操作命令におけるレジスタアドレスが予め作成したマッピングテーブルにある場合、前記第1操作命令におけるレジスタアドレスを変更する処理モジュールと、
前記変更された第1操作命令をメインプログラムにリンクするリンクモジュールとを含み、
前記マッピングテーブルは、前記メインプログラムの宛先レジスタアドレスと前記ライブラリ関数のレジスタアドレスとのマッピング関係を含み、前記メインプログラムの宛先レジスタアドレスが第1アドレスビット数に上げられ、前記ライブラリ関数の操作命令におけるレジスタアドレスが第2アドレスビット数であり、第1アドレスビット数が第2アドレスビット数よりも大きく、変更された第1操作命令におけるレジスタアドレスが前記マッピングテーブルにおける対応するメインプログラムの宛先レジスタアドレスである
ことを特徴とするクロスリンク装置。
【請求項9】
前記ライブラリ関数におけるすべての命令をスキャンする前に、前記ライブラリ関数におけるそれぞれのレジスタにそれぞれ1つの命令で値を代入するように、前記ライブラリ関数に対応するレジスタをリネームするリネームモジュールをさらに含む
ことを特徴とする請求項8に記載の装置。
【請求項10】
ライブラリ関数のアドレス操作命令が予め作成したマッピングテーブルにある場合、前記ライブラリ関数のアドレス操作命令におけるレジスタアドレスを変更する前に、前記ライブラリ関数におけるすべての命令をスキャンし、アドレス操作命令である前記第1操作命令を特定し、前記第1操作命令におけるレジスタアドレスを前記マッピングテーブルとマッチングするマッチングモジュールをさらに含む
ことを特徴とする請求項8に記載の装置。
【請求項11】
前記ライブラリ関数におけるすべての命令をスキャンする前に、第2アドレスビット数である、呼び出されたライブラリ関数に入力パラメータを提供するための宛先レジスタアドレスと、ソースレジスタアドレスとを含む前記メインプログラムのパラメータ伝送命令を取得し、前記宛先レジスタアドレスを第1アドレスビット数に上げるとともに、前記呼び出されたライブラリ関数の、その自身の入力パラメータのアドレスであるレジスタアドレスと関連付け、ビット数が上げられた前記宛先レジスタアドレスと前記呼び出されたライブラリ関数のレジスタアドレスに基づいて前記マッピングテーブルを構築する構築モジュールをさらに含む
ことを特徴とする請求項10に記載の装置。
【請求項12】
前記メインプログラムのパラメータ伝送命令を取得する前に、第1アドレスビット数のコンパイラにより、第1アドレスビット数のメインプログラムのソースコードを前記メインプログラムにコンパイルし、第2アドレスビット数のコンパイラにより、第2アドレスビット数のライブラリ関数のソースコードを前記ライブラリ関数にコンパイルするコンパイルモジュールをさらに含む
ことを特徴とする請求項11に記載の装置。
【請求項13】
前記マッピングテーブルにあるレジスタアドレスおよび前記マッピングテーブルにないレジスタアドレスが前記第1操作命令に存在する場合、前記マッピングテーブルにないレジスタアドレスに対応するメインプログラムの宛先レジスタを符号拡張により第1アドレスビット数に上げ、前記マッピングテーブルを更新し、更新されたマッピングテーブルに基づいて前記第1操作命令におけるレジスタアドレスを変更する更新モジュールをさらに含む
ことを特徴とする請求項8に記載の装置。
【請求項14】
前記第1操作命令は、ロード命令、ストア命令、演算命令のうちのいずれか一種を含むことを特徴とする請求項8~13のいずれか一項に記載の装置。
【請求項15】
プロセッサと、
前記プロセッサに接続され、前記プロセッサに実行されて請求項1~のいずれか一項に記載の方法を実行させるプログラムを記憶しているメモリと、を含む
ことを特徴とする電子機器。
【請求項16】
プロセッサと、
前記プロセッサに接続され、前記プロセッサに実行されて請求項7に記載の方法を実行させるプログラムを記憶しているメモリと、を含む
ことを特徴とする電子機器。
【請求項17】
請求項1~のいずれか一項に記載の方法をコンピュータに実行させる
ことを特徴とするコンピュータプログラム
【請求項18】
請求項7に記載の方法をコンピュータに実行させる
ことを特徴とするコンピュータプログラム。
【国際調査報告】