(57)【要約】【課題】制御プログラムの情報が欠如している場合にも、制御プログラムのソースコード又は記述を把握することなく制御プログラムを変更可能にする。【解決手段】関数呼び出しに応じて、制御プログラムのプログラムコードを検査し、関数呼び出しに関連したジャンプ先アドレスと、リターン命令のアドレスとを検出し、各プログラムコードが占有するメモリ領域のサイズを検出し、各第１の関数に割り当てられているメモリ領域のサイズとアドレスとを有する識別子を表示ユニットに表示し、第１の関数の少なくとも１つを削除すべきであるとして選択し、選択された第１の関数のサイズとアドレスとを情報構造に格納し、選択された第１の関数の関数呼び出しを非アクティベートし、及び／又は、選択された第１の関数を第２の関数によって置換し、選択された第１の関数のプログラムコードを、第２の関数のプログラムコードによって上書きする。【選択図】図１
2015088188.tif 000002
【特許請求の範囲】
【請求項１】
制御装置の制御プログラムに影響を与えるための方法であって、
前記制御プログラムは、複数の第１の関数（Ｆ１Ａ，Ｆ１Ｂ，Ｆ１Ｃ・・・Ｆ１Ｎ）を含んでおり、前記複数の第１の関数（Ｆ１Ａ，Ｆ１Ｂ，Ｆ１Ｃ・・・Ｆ１Ｎ）のうちの少なくとも１つは、アクチュエータを制御するために構成されており、
メモリ（ＳＰ１）が設けられており、
前記メモリ（ＳＰ１）は、前記第１の関数（Ｆ１Ａ，Ｆ１Ｂ，Ｆ１Ｃ・・・Ｆ１Ｎ）に割り当てられたサブプログラムによって占有されたメモリ領域を有しており、
前記制御プログラムは、バイナリのプログラムコードとして設けられており、
前記制御プログラムの前記プログラムコードには、前記複数の第１の関数（Ｆ１Ａ，Ｆ１Ｂ，Ｆ１Ｃ・・・Ｆ１Ｎ）のうちの１つの関数呼び出し時に、ジャンプ先アドレスが設けられており、
前記ジャンプ先アドレスは、前記関数呼び出しに関連した前記サブプログラムのメモリアドレスを指示するものであり、
前記サブプログラムは、バイナリのプログラムコードのシーケンスとして設けられており、
前記サブプログラムの前記プログラムコードのシーケンス末尾には、リターン命令が設けられている、
方法において、
関数呼び出しの発生に応じて、前記制御プログラムの前記プログラムコードを検査し、
前記関数呼び出しに関連したジャンプ先アドレスと、前記リターン命令のアドレスとを検出し、
前記検出から、各前記サブプログラムによって占有されている前記メモリ（ＳＰ１）のメモリ領域のサイズを検出し、
前記第１の関数（Ｆ１Ａ，Ｆ１Ｂ，Ｆ１Ｃ・・・Ｆ１Ｎ）に割り当てられた識別子を、各前記第１の関数（Ｆ１Ａ，Ｆ１Ｂ，Ｆ１Ｃ・・・Ｆ１Ｎ）に割り当てられている、前記メモリ領域のサイズとアドレスと共に、コンピュータシステム（ＧＵＩ）の一部として構成されているディスプレイユニットに表示し、
前記コンピュータシステム（ＧＵＩ）によって、前記複数の第１の関数（Ｆ１Ａ，Ｆ１Ｂ，Ｆ１Ｃ・・・Ｆ１Ｎ）のうちの少なくとも１つを、削除すべきであるとして選択し、
前記選択された第１の関数（Ｆ１Ａ，Ｆ１Ｂ，Ｆ１Ｃ・・・Ｆ１Ｎ）のサイズとアドレスとを、情報構造（ＩＳＴ）に格納し、
前記選択された第１の関数（Ｆ１Ａ，Ｆ１Ｂ，Ｆ１Ｃ・・・Ｆ１Ｎ）の少なくとも１つの関数呼び出しを非アクティベートし、及び／又は、前記選択された第１の関数（Ｆ１Ａ，Ｆ１Ｂ，Ｆ１Ｃ・・・Ｆ１Ｎ）を第２の関数（Ｆ２Ａ）によって置換し、
前記選択された第１の関数（Ｆ１Ａ，Ｆ１Ｂ，Ｆ１Ｃ・・・Ｆ１Ｎ）の前記プログラムコードを、前記第２の関数（Ｆ２Ａ）のプログラムコードによって上書きする、
ことを特徴とする方法。
【請求項２】
削除すべき第１の関数（Ｆ１Ａ，Ｆ１Ｂ，Ｆ１Ｃ・・・Ｆ１Ｎ）を複数選択し、複数の第２の関数（Ｆ２Ａ，Ｆ２Ｂ）によって置換する、
ことを特徴とする請求項１記載の方法。
【請求項３】
前記メモリ（ＳＰ１）は、空きメモリ領域（ＦＲ１，ＦＲ２）を有する、
ことを特徴とする請求項１記載の方法。
【請求項４】
削除すべきであるとして選択された前記第１の関数（Ｆ１Ａ，Ｆ１Ｂ）によって占有されている前記メモリ領域と、前記空きメモリ領域（ＦＲ１，ＦＲ２）とに、それぞれ一義的なセグメント名を割り当てる、
ことを特徴とする請求項１から３のいずれか一項記載の方法。
【請求項５】
削除すべき前記第１の関数（Ｆ１Ａ，Ｆ１Ｂ）の前記メモリ領域のサイズとアドレスの分析から、統合された個々のメモリ領域と、個々のメモリ領域のサイズとアドレスとを検出して、前記情報構造（ＩＳＴ）に格納する、
ことを特徴とする請求項１から４のいずれか一項記載の方法。
【請求項６】
前記情報構造（ＩＳＴ）に、前記セグメント名を格納する、
ことを特徴とする請求項４又は５記載の方法。
【請求項７】
前記コンピュータシステム（ＧＵＩ）によって、削除すべき第１の関数（Ｆ１Ａ，Ｆ１Ｂ）の各メモリ領域のため、及び／又は、各空きメモリ領域のために、前記第２の関数（Ｆ１Ａ，Ｆ２Ｂ）の前記プログラムコードを作成する前に、空のサブシステム（ＳＵＢ１，ＳＵＢ２）を作成して前記メモリ領域に割り当て、そして、当該メモリ領域への前記サブシステム（ＳＵＢ１，ＳＵＢ２）の前記割り当てを、前記情報構造（ＩＳＴ）及び／又は前記サブシステム（ＳＵＢ１，ＳＵＢ２）に格納する、
ことを特徴とする請求項１から５のいずれか一項記載の方法。
【請求項８】
前記第２の関数（Ｆ２Ａ，Ｆ２Ｂ）を、空のサブシステム（ＳＵＢ２）に割り当てる、
ことを特徴とする請求項７記載の方法。
【請求項９】
前記空のサブシステム（ＳＵＢ１，ＳＵＢ２）に、メタ情報を割り当て、当該メタ情報を、前記情報構造（ＩＳＴ）及び／又は前記サブシステム（ＳＵＢ１，ＳＵＢ２）に格納する、
ことを特徴とする請求項７又は８記載の方法。
【請求項１０】
複数のサブシステム（ＳＵＢ１，ＳＵＢ２）同士を、プログラム呼び出しによって互いに関連付け、当該関連付けを、前記情報構造（ＩＳＴ）及び／又は前記サブシステム（ＳＵＢ１，ＳＵＢ２）に格納する、
ことを特徴とする請求項７から９のいずれか一項記載の方法。
【請求項１１】
各サブシステム（ＳＵＢ１，ＳＵＢ２）につき１つの、Ｃファイルの形態の別個のプログラムコードを作成する、
ことを特徴とする請求項７から１０のいずれか一項記載の方法。
【請求項１２】
前記第２の関数（Ｆ２Ａ，Ｆ２Ｂ）に対し、コンパイラ（ＣＩ）によってバイナリのプログラムコードを作成し、メタ情報が存在する場合には、当該メタ情報を、前記バイナリのプログラムコードで入力する、
ことを特徴とする請求項１から１１のいずれか一項記載の方法。
【請求項１３】
前記第１の関数（Ｆ１Ａ，Ｆ１Ｂ，Ｆ１Ｃ・・・Ｆ１Ｎ）に割り当てられた前記メモリ領域が、所定の最小サイズを上回っている場合に、前記第１の関数に割り当てられた当該メモリ領域を前記コンピュータシステム（ＧＵＩ）に示す、
ことを特徴とする請求項１から１２のいずれか一項記載の方法。
【請求項１４】
前記選択された第１の関数（Ｆ１Ａ，Ｆ１Ｂ）の前記メモリ領域が、前記第２の関数（Ｆ２Ａ，Ｆ２Ｂ）のサイズに対して充分であるか否かを、チェックプログラムによって検査する、
ことを特徴とする請求項１から１３のいずれか一項記載の方法。
【請求項１５】
ヒューリスティック法によって前記メモリ領域のチェックを実施し、使用されているブロックの数及び／又は形式によって前記第２の関数（Ｆ１Ａ，Ｆ２Ｂ）のメモリ消費量を求める、
ことを特徴とする請求項１から１４のいずれか一項記載の方法。
【請求項１６】
前記第２の関数（Ｆ２Ａ，Ｆ２Ｂ）の前記バイナリのプログラムコードの作成時に、当該第２の関数（Ｆ２Ａ，Ｆ２Ｂ）の前記バイナリのプログラムコードを複数のメモリ領域に割り当てる際、当該割り当てに基づいて、前記プログラムコードに適当なジャンプ命令を挿入する、
ことを特徴とする請求項１から１５のいずれか一項記載の方法。
【請求項１７】
前記第２の関数の割り当て後、残っているメモリ領域を前記コンピュータシステムに表示する、
ことを特徴とする請求項１から１６のいずれか一項記載の方法。
【請求項１８】
前記第２の関数の前記バイナリのプログラムコードを、前記割り当てられたメモリ領域に書き込む、
ことを特徴とする請求項１から１７のいずれか一項記載の方法。
【請求項１９】
前記メモリ（ＳＰ１）において、前記選択された第１の関数（Ｆ１Ａ，Ｆ１Ｂ）の前記ジャンプ先アドレスのデスティネーションに、リターン命令を格納する、
ことを特徴とする請求項１から１８のいずれか一項記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、請求項１の上位概念に記載の、制御装置の制御プログラムに影響を与えるための方法に関する。
【０００２】
多数の技術分野において、多数の制御装置が使用されている。特に重要な使用分野は、とりわけ自動車におけるエンジン、トランスミッション、駆動装置の制御、並びに、航空機におけるエンジン装置の制御である。このような制御装置においては、一般的に、バイナリ形態のプログラムコードが格納されている。それぞれ有利にはリードオンリーメモリに格納されている制御プログラムは、簡単には変更することができない。
【背景技術】
【０００３】
制御装置に影響を与えるための方法は、ＤＥ１０２００４０２７０３３Ａ１から公知である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】ＤＥ１０２００４０２７０３３Ａ１
【発明の概要】
【発明が解決しようとする課題】
【０００５】
このような技術背景を前にして、本発明の課題は、制御装置の制御プログラムに影響を与えるための従来技術を発展させる方法を提供することである。
【課題を解決するための手段】
【０００６】
この課題は、請求項１の特徴部分に記載の、制御装置の制御プログラムに影響を与えるための方法によって解決される。本発明の有利な実施形態は、従属請求項に記載されている。
【０００７】
本発明の第１の対象によれば、制御装置の制御プログラムに影響を与えるための方法であって、前記制御プログラムは、複数の第１の関数を含んでおり、前記複数の第１の関数のうちの少なくとも１つは、アクチュエータを制御するために構成されており、メモリが設けられており、前記メモリは、前記第１の関数が割り当てられたサブプログラムによって占有されているメモリ領域を有しており、前記制御プログラムは、バイナリのプログラムコードとして設けられており、前記制御プログラムの前記プログラムコードには、前記複数の第１の関数のうちの１つの関数呼び出し時に、ジャンプ先アドレスが設けられており、前記ジャンプ先アドレスは、前記関数呼び出しに関連した前記サブプログラムのメモリアドレスを指示するものであり、前記サブプログラムは、バイナリのプログラムコードのシーケンスとして設けられており、前記サブプログラムの前記プログラムコードのシーケンス末尾には、リターン命令が設けられている、方法において、関数呼び出しの発生に応じて、前記制御プログラムの前記プログラムコードを検査し、前記関数呼び出しに関連したジャンプ先アドレスと、前記リターン命令のアドレスとを検出し、前記検出から、各前記プログラムコードによって占有されている前記メモリのメモリ領域のサイズを検出し、前記第１の関数に割り当てられた識別子を、各前記第１の関数に割り当てられている、前記メモリ領域のサイズとアドレスと共に、コンピュータシステムの一部として構成されている表示ユニットに表示し、前記コンピュータシステムによって、前記複数の第１の関数のうちの少なくとも１つを、削除すべきであるとして選択し、前記選択された第１の関数の前記サイズと前記アドレスとを、情報構造に格納し、前記選択された第１の関数の少なくとも１つの関数呼び出しを非アクティベートし、及び／又は、前記選択された第１の関数を第２の関数によって置換し、前記選択された第１の関数の前記プログラムコードを、前記第２の関数のプログラムコードによって上書きする、ことを特徴とする方法が提供される。
【０００８】
本発明における情報構造という用語は、データ、並びに、データ構造、並びに、作業プログラム内のデータ構造を意味することに留意されたい。さらにサブシステムという用語は、選択された関数、すなわち削除すべき関数の、又は、メモリのうち占有されていない領域の、有利にはグラフィカルに示されたモデルを意味することに留意されたい。この場合には各選択された第１の関数と、占有されていない空きメモリ領域とに、それぞれ１つのサブシステムを割り当てると有利である。さらに“識別子”という用語は、特にサブプログラムのいわゆる最初の仮の名前を意味することに留意されたい。基本的に本来の、すなわち“正しい”関数名が検出された後には、この最初の仮の名前はこの“正しい”関数名に置換される。
【０００９】
制御装置の制御プログラムに影響を与えるための本発明の方法の利点は、既にエンジン制御のために使用中の比較的古い制御装置であっても、制御プログラムのソースコードを把握することなく、又は、サブプログラムの一覧乃至サブプログラムの名前及びジャンプ先アドレスを有する制御プログラムの記述を把握することなく、制御プログラムを変更できること、いわゆるアップデートを実施できることである。本発明の方法によれば、ユーザは、制御プログラムの作成者の情報の欠如には充分に左右されなくなる。本発明の方法によれば、エンジンのチューニング分野においても、制御プログラムに簡単かつ低コストに非常に広範囲に介入することができる。
【００１０】
本発明の方法の１つの発展形態においては、削除すべき第１の関数が複数選択され、複数の第２の関数によって置換される。このために、識別子によって名付けられた関数が、当該関数のサイズとアドレスと共に、ディスプレイユニットにグラフィカルに表示される。その後、変更又は削除すべき関数が選択され、第２の関数に置換される。さらにメモリが、サブプログラムによって占有されているメモリ領域の他に、空きメモリ領域も有していると有利である。研究によって、削除すべきであるとして選択された第１の関数によって占有されているメモリ領域と、空きメモリ領域とにも、それぞれ一義的なセグメント名を割り当て、情報構造に格納すると有利であることが判明している。有利には、識別子はセグメント名に相当しているか、又は、識別子とセグメント名とは同一である。従ってつまり、各空きメモリ領域に対する情報構造には、識別子と、サブプログラムの呼び出し用のジャンプ先アドレスと、長さ、すなわちサブプログラムのサイズと、セグメント名とが格納されていることとなる。セグメント名を割り当てることの利点は、メモリ領域が複数ある場合に、さらなる別の順序付け基準を使用できること、及び、セグメント名に応じた分類、すなわち順序付けを実施できることである。
【００１１】
別の１つの発展形態においては、削除すべき前記第１の関数のメモリ領域のサイズとアドレスの分析から、統合された個々のメモリ領域と、個々のメモリ領域のサイズとアドレスとを検出して、情報構造に格納すると有利である。別の１つの実施形態においては、前記コンピュータシステムによって、削除すべき第１の関数の各メモリ領域のため、及び／又は、各空きメモリ領域のために、前記第２の関数の前記プログラムコードを作成する前に、空のサブシステムを形成してメモリ領域に割り当て、そして、当該メモリ領域へのサブシステムの割り当てを、情報構造及び／又はサブシステムに格納する。特に有利には、第２の関数も、空のサブシステムに割り当てる。さらに１つの実施形態によれば、空のサブシステムにメタ情報を割り当て、当該メタ情報を、情報構造及び／又はサブシステムに格納する。
【００１２】
別の１つの発展形態では、複数のサブシステム同士を、プログラム呼び出しによって互いに関連付け、前記複数のサブシステム同士を結び付けている当該関連付けを、情報構造及び／又はサブシステムに格納する。研究により、各サブシステムにつき１つの別個のプログラムコードを、有利にはＣファイルの形態で作成すると有利であることが判明している。もちろん、別のプログラミング言語も使用可能である。
【００１３】
有利な１つの実施形態によれば、前記第２の関数に対し、コンパイラによってバイナリのプログラムコードを作成し、メタ情報が存在する場合には、当該メタ情報を、前記バイナリのプログラムコードで入力する。
【００１４】
研究により、前記第１の関数に割り当てられた前記メモリ領域が、所定の最小サイズを上回っている場合にのみ、前記第１の関数に割り当てられた当該メモリ領域を前記コンピュータシステムに示すと有利であることが判明している。別の１つの実施形態においては、選択された唯１つの第１の関数の、又は、選択された複数の第１の関数の前記メモリ領域が、前記第２の関数のサイズに対して充分であるか否かを、チェックプログラムによって検査すると有利である。
【００１５】
別の１つの実施形態においては、ヒューリスティック法によってメモリ領域のチェックを実施し、使用されているブロックの数及び／又は形式によって第２の関数のメモリ消費量を求める。特に有利な１つの実施形態においては、前記第２の関数の前記バイナリのプログラムコードの作成時に、当該第２の関数のバイナリのプログラムコードを複数のメモリ領域に割り当てる際、当該複数のメモリ領域への割り当てに基づいて、作成されたプログラムコードに適当なジャンプ命令を挿入する。この場合における適当なジャンプ命令という用語は、特に、メモリ領域のアドレス末尾において、さらなる別のメモリ領域のアドレス先頭を指示するジャンプ命令が呼び出されることを意味する。プログラムコードの作成が、プログラミング言語から、特にＣプログラミングステップからバイナリのプログラムコードを作成するコンパイルステップを意味することは自明である。特に、第２の関数のバイナリのプログラムコードを、１つ又は複数の割り当てられたメモリ領域に書き込むと有利である。
【００１６】
有利な１つの発展形態においては、前記第２の関数の割り当て後、残っているメモリ領域を前記コンピュータシステムに表示する。第２の関数が複数ある場合に、さらなる別の第２の関数に対して充分なメモリ領域を使用することが可能であるか否かを連続的にチェックできるという利点がある。
【００１７】
別の１つの発展形態においては、前記メモリにおいて、前記選択された第１の関数の前記ジャンプ先アドレスのデスティネーションに、リターン命令を格納する。リターン命令が書き込まれるアドレスは、第２の関数のプログラムコードに対して非表示にされ、また、第２の関数のプログラムコードによって記述されないことは自明である。選択された複数の第１の関数のうちの１つの関数呼び出しが発見されず、非アクティベートされず、従ってさらに当該第１の関数が呼び出される場合には、プログラムコードが実行されると簡単にジャンプして戻り、プログラムが引き続き実行される。第２の関数が呼び出されると、当該呼び出しは、リターン命令に後続するメモリアドレスへとセットされる。もしくは換言すると、第２の関数は、リターン命令に後続するメモリアドレスにおいて初めて開始する。こうすることにより、メモリ内容の変更時における安全性が向上する。
【００１８】
別の１つの実施形態では、削除すべき第１の関数のメモリ領域の前に、既に空きメモリ領域が設けられている。２つの領域が統合されて１つの大きいメモリ領域が形成され、これに対して唯１つのサブシステムが形成され、複数の第２の関数のうちの１つに割り当てられる。第１の関数の呼び出しが第２の関数の途中にジャンプしないよう保証するために、第１の関数のジャンプ先アドレスの元々のアドレス位置にリターン命令がセットされる。第２の関数のプログラムコードは、メモリ領域の残りの領域を占有しているが、リターン命令のアドレスは占有していない。第２の関数のための全ての呼び出しが、第２の関数の開始アドレスを指示することは自明である。
【００１９】
以下、本発明を、図面を参照しながらより詳細に説明する。図面では、同じ種類の部分には同一の参照符号を付している。図示した実施形態は非常に概略化されている。すなわち間隔や、縦方向及び横方向の長さは縮尺通りではなく、特に明記しない限り、相互に導出可能な幾何学的関係性を示しているわけではない。
【図面の簡単な説明】
【００２０】
【図１】ディスプレイユニットに接続された制御装置の概略構造図である。
【図２】メモリユニットの変更前及び変更後における、図１のメモリの詳細な細分図である。
【図３】本発明の方法の１つの実施形態の概略図である。
【実施例】
【００２１】
図１は、メモリＳＰ１と、インターフェースユニットＳＩと、プロセッサＰＣと有する制御装置ＥＣＵを示す。制御装置ＥＣＵは、インターフェースユニットＳＩを介してコンピュータシステムＧＵＩにデータ接続されている。コンピュータシステムＧＵＩは、ディスプレイユニット（図示せず）を含む。一般的にディスプレイユニットは、グラフィカルインターフェースユニットとも呼ばれている。制御装置ＥＣＵでは、プロセッサＰＣによって制御プログラムが処理される。制御プログラムは、バイナリのプログラムコードとして設けられており、メインプログラムとも呼ぶことができる。制御プログラムは、図２に図示された複数の第１の関数Ｆ１Ａ，Ｆ１Ｂ，Ｆ１Ｃ・・・Ｆ１Ｎを含む。複数の第１の関数Ｆ１Ａ，Ｆ１Ｂ，Ｆ１Ｃ・・・Ｆ１Ｎの少なくとも一部は、有利には１つ又は複数のアクチュエータ（図示せず）を制御するというタスクを有する。さらに、第１の関数Ｆ１Ａ，Ｆ１Ｂ，Ｆ１Ｃ・・・Ｆ１Ｎには、サブプログラムが割り当てられている。
【００２２】
制御プログラムは、プロセッサＰＣによって処理される。制御プログラムのプログラムコードには、第１の関数の１つを呼び出すためにジャンプ先アドレスが設けられている。このジャンプ先アドレスは、関数呼び出しに関連しているサブプログラムのメモリアドレスを示すものである。各サブプログラムは、制御プログラムと同様に、バイナリのプログラムコードのシーケンスとして設けられている。サブプログラムのプログラムコードのシーケンス末尾において、リターン命令によってメインプログラムの所定の箇所にジャンプして戻り、引き続き、制御プログラムのプログラムコードが処理される。
【００２３】
制御プログラムのプログラムコードは、関数呼び出しの発生に応じてコンピュータシステムＧＵＩによって検査され、当該関数呼び出しに関連したジャンプ先アドレスと、リターン命令のアドレスとが検出され、この検出から、各サブプログラムによって占有されているメモリＳＰ１のメモリ領域のサイズが導出される。さらに、検出されたサブプログラムに対して識別子が設けられる。この場合の「識別子」という用語は、サブプログラムに割り当てられる名称を含んでいる。検出されたデータ、すなわち検出された第１の関数Ｆ１Ａ，Ｆ１Ｂ，Ｆ１Ｃ・・・Ｆ１Ｎのサイズとアドレスと、識別子とは、図３に図示された情報構造ＩＳＴに格納される。さらに、第１の関数Ｆ１Ａ，Ｆ１Ｂ，Ｆ１Ｃ・・・Ｆ１Ｎに割り当てられた識別子は、各第１の関数Ｆ１Ａ，Ｆ１Ｂ，Ｆ１Ｃ・・・Ｆ１Ｎに割り当てられているメモリ領域のサイズとアドレスと共に、ディスプレイユニットに表示される。
【００２４】
図２は、図１に図示されたメモリＳＰ１に関する、メモリ領域の占有状況を示す概略図である。以下では、図１との相違点のみ説明する。メモリＳＰ１には、複数の第１の関数Ｆ１Ａ，Ｆ１Ｂ，Ｆ１Ｃ・・・Ｆ１Ｎが格納されている。第１の関数Ｆ１Ａ，Ｆ１Ｂ，Ｆ１Ｃ・・・Ｆ１Ｎのうちのいくつかの間には、空きメモリ領域ＦＲ１及びＦＲ２が形成されている。コンピュータシステムＧＵＩによって、検出された複数の第１の関数Ｆ１Ａ，Ｆ１Ｂ，Ｆ１Ｃ・・・Ｆ１Ｎから、１番目の第１の関数Ｆ１Ａと２番目の第１の関数Ｆ１Ｂとが、消去すべきであるとして選択される。最後に、選択された第１の関数Ｆ１Ａのプログラムコードと、選択された第１の関数Ｆ１Ｂのプログラムコードとが、１番目の第２の関数Ｆ２Ａのプログラムコードと、２番目の第２の関数Ｆ２Ｂのプログラムコードとによって上書きされる。プログラムコードが検査された後、コンピュータシステムＧＵＩによって、１番目の第２の関数Ｆ２Ａと２番目の第２の関数Ｆ２Ｂとが、これまで第１の関数Ｆ１Ａと第１の関数Ｆ１Ｂとが格納されていた場所に格納される。換言すると、選択された第１の関数Ｆ１Ａ及び第１の関数Ｆ１Ｂが置換される。
【００２５】
図３は、コンピュータシステムＧＵＩの構造の一部の概略図である。以下では、図１及び図２との相違点のみ説明する。第１ステップＵ１における制御プログラムのプログラムコードの分析時、つまり検査時に、削除すべき第１の関数Ｆ１Ａ及びＦ１Ｂに関する検出されたデータが情報構造ＩＳＴに格納される。検出されたデータに加えてさらに、削除すべき第１の関数Ｆ１Ａ及びＦ１Ｂのメモリ領域にセグメント名が割り当てられ、情報構造ＩＳＴに格納される。従って、第１の関数Ｆ１Ａ及びＦ２Ｂが割り当てられていたが今は空き状態として分類されている２つのメモリ領域に関して、識別子と、当該空きメモリ領域の開始アドレスと、メモリ領域の長さ、すなわちサイズと、セグメント名とが、情報構造ＩＳＴに格納されることとなる。
【００２６】
次いで、１番目の第１の関数Ｆ１Ａに関連した空きメモリ領域に、第１サブシステムＳＵＢ１が割り当てられ、２番目の第１の関数Ｆ１Ｂに関連した空きメモリ領域に、第２サブシステムＳＵＢ２が割り当てられる。メモリＳＰ１のメモリ領域の、変更された割り当ては、メモリＳＰ１のモデルＭＳＰ１としてディスプレイユニットに表示される。空きメモリ領域ＦＲ１及びＦＲ２も、ディスプレイユニットに表示される。ここでは、２つの空きメモリ領域ＦＲ１及びＦＲ２は、サブシステムには関連付けられていない。図示していない別の択一的実施形態では、空きメモリ領域ＦＲ１及びＦＲ２のサイズが所定の最小サイズを上回っている場合には、当該空きメモリ領域ＦＲ１及びＦＲ２をサブシステムに関連付け、表示することも可能である。
【００２７】
第２ステップＵ２においては、情報構造ＩＳＴからのデータを使用して、第１サブシステムＳＵＢ１に対して１番目の第２の関数Ｆ２ＡのＣコードが作成され、第２サブシステムＳＵＢ２に対して２番目の第２の関数Ｆ２ＢのＣコードが作成され、そして、これらのＣコードが各々のサブシステムＳＵＢ１及びＳＵＢ２に割り当てられる。Ｃコードの作成時には、コンパイラ専用のＣコード命令の形成により、１番目の第２の関数Ｆ２Ａと、２番目の第２の関数Ｆ２Ｂとが、それぞれ１つのセグメント名に割り当てられる。後続のコンパイルステップにおいては、コンパイラＣＩによって、第１オブジェクトデータＣＳＵＢ１及び第２オブジェクトデータＣＳＵＢ２として、バイナリのプログラムコードが作成される。作成された２つのオブジェクオデータＣＳＵＢ１及びＣＳＵＢ２は、バイナリのプログラムコードの他に、いわゆるメタアドレス情報を含む。第１オブジェクトデータＣＳＵＢ１のプログラムコードが１番目の第２の関数Ｆ２Ａに相当し、第２オブジェクトデータＣＳＵＢ２のプログラムコードが２番目の第２の関数Ｆ２Ｂに相当することは自明である。
【００２８】
２つのオブジェクトデータＣＳＵＢ１及びＣＳＵＢ２の、各々必要とするメモリ領域のサイズを検査し、使用可能なメモリ領域のサイズとそれぞれ比較すると有利であることが、研究により判明している。比較の際に、割り当てられているメモリ領域のサイズが充分ではないことが判明した場合には、さらなる別の第１の関数Ｆ１Ｃ及びＦ１Ｄを削除することによって、さらなるメモリ領域を形成することができる、及び／又は、第１の関数Ｆ１Ａ，Ｆ１Ｂ，Ｆ１Ｃ・・・Ｆ１Ｎによって占有されていないメモリ領域ＦＲ１及びＦＲ２が早くも使用される。
【００２９】
第２の関数Ｆ２Ａ及びＦ２Ｂのうちの１つを、複数のサブシステム又は複数のメモリ領域に割り当てる場合には、Ｃコードの作成時に、これに応じたジャンプ命令が挿入される。
【００３０】
隣接している空きメモリ領域と、削除済みの第１の関数のメモリ領域とを統合して、より大きな１つの空きメモリ領域にすることができることに留意すべきである。後続のステップでは、リンカＬＩによって、オブジェクトデータＣＳＵＢ１及びＣＳＵＢ２の、作成されたバイナリのプログラムコードが、空きメモリ領域に割り当てられる。つまりここでは、削除済みの第１の関数のメモリ領域、又は、統合された空きメモリ領域に割り当てられる。リンカＬＩには、割り当てに必要な情報が、情報構造ＩＳＴから供給される。有利には、情報構造ＩＳＴの情報から、リンカＬＩが読出可能ないわゆるリンカコマンドファイルが作成される。その後、リンカＬＩは、有利には“ＥＬＦ”データフォーマットのバイナリデータＥＬＦを作成する。“ＥＬＦ”フォーマットのバイナリデータＥＬＦは、削除済みの第１の関数のメモリ領域、又は、統合された空きメモリ領域に割り当てられた、オブジェクトデータＣＳＵＢ１及びＣＳＵＢ２のプログラムコードを含む。さらに、リンカＬＩは、個々のセグメントの位置及びサイズに関する情報を有する、いわゆる“マップ”データＭＡＰを作成する。
【００３１】
さらなるステップにおいては、“マップ”データＭＡＰの内容と、情報構造ＩＳＴの内容とを比較することによって、各サブシステムＳＵＢ１及びＳＵＢ２の不要なメモリ領域が検出され、ディスプレイユニットに表示される。
【００３２】
方法の個々のステップを、複数回実行可能であることは自明である。特に、削除すべき第１の関数を最初に選択した後、さらに別の削除すべき第１の関数を選択することが可能である。コンピュータシステムＧＵＩによるサイズの検査を常に実施することも可能である。さらには、最後のコード作成の結果を、変更されたブロックと組み合わせて、メモリ領域消費量のサイズをより良好に推定するために利用すると有利である。
【図１】
2015088188.tif 000003
【図２】
2015088188.tif 000004
【図３】
2015088188.tif 000005