(57)【要約】【課題】細かなアドレス指定を可能とすることにより、メモリ領域の効率的な使用を実現し得るアドレス指定方法を得る。【解決手段】データＤ１がＭビットデータであるものとして、アドレス演算部１は、インデックス値Ｉ１を「８／Ｍ」の値で除算し、除算の商に基づいてメモリ３のバイト番号を指定し、除算の余りに基づいてバイト番号内のビット番号を指定する。例えば、データＤ１が１ビットデータである場合、「８／Ｍ」の値は「８」となる。データＤ１に対応するインデックス値Ｉ１が例えば「１３」とすると、アドレス演算部１は、１３÷８なる演算を実行し、商が「１」で余りが「５」なる解を得る。従って、この場合は、データＤ１を書き込むべきメモリ３のアドレスＡ１として、「第１バイトの第５ビット」というアドレスを指定する。【選択図】図１
2007058521.tif 000002
【特許請求の範囲】
【請求項１】
メモリへアクセスする際のアドレスを指定する方法であって、
（ａ）インデックス値を、アクセスデータのビット数に応じた値で除算するステップと、
（ｂ）前記ステップ（ａ）における除算の結果に基づいて前記メモリのアドレスを指定するステップと
を備える、アドレス指定方法。
【請求項２】
前記ステップ（ｂ）では、前記除算の商に基づいて前記メモリのバイトが指定され、前記除算の余りに基づいて前記バイト内のビットが指定される、請求項１に記載のアドレス指定方法。
【請求項３】
前記ステップ（ａ）はモジュール関数によって処理されることを特徴とする、請求項１又は２に記載のアドレス指定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＲＡＭ等のメモリへアクセスする際のアドレス指定方法に関する。
【背景技術】
【０００２】
周知技術である例えばＣ言語においては、ポインタと呼ばれるアドレス変数を用いたアドレス指定方式が採用されている。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上記したポインタを用いたアドレス指定方法によると、メモリにアクセスする際にメモリのアドレスを大まか（バイト単位）にしか指定できないため、メモリの容量を無駄にしてしまうという問題がある。
【０００４】
本発明はかかる問題を解決するために成されたものであり、細かなアドレス指定を可能とすることにより、メモリ領域の効率的な使用を実現し得るアドレス指定方法を得ることを目的とする。
【課題を解決するための手段】
【０００５】
第１の発明に係るアドレス指定方法は、メモリへアクセスする際のアドレスを指定する方法であって、（ａ）インデックス値を、アクセスデータのビット数に応じた値で除算するステップと、（ｂ）前記ステップ（ａ）における除算の結果に基づいて前記メモリのアドレスを指定するステップとを備える。
【０００６】
第２の発明に係るアドレス指定方法は、第１の発明に係るアドレス指定方法において特に、前記ステップ（ｂ）では、前記除算の商に基づいて前記メモリのバイトが指定され、前記除算の余りに基づいて前記バイト内のビットが指定されることを特徴とする。
【０００７】
第３の発明に係るアドレス指定方法は、第１又は第２の発明に係るアドレス指定方法において特に、前記ステップ（ａ）はモジュール関数によって処理されることを特徴とする。
【発明の効果】
【０００８】
第１及び第２の発明に係るアドレス指定方法によれば、インデックス値をアクセスデータのビット数に応じた値で除算し、除算の商に基づいてメモリのバイトを指定し、除算の余りに基づいてバイト内のビットを指定する。従って、バイトとビットとを用いた細かなアドレス指定が可能となるため、メモリ領域の効率的な使用が実現される。
【０００９】
第３の発明に係るアドレス指定方法によれば、インデックス値の取得やデータサイズの選定をモジュール関数によって処理することにより、アドレスの指定の容易化を図ることができる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
【００１１】
図１は、本発明の実施の形態に係るコンピュータシステムの一部を示すブロック図である。コンピュータシステムは、アドレス演算部１、インデックスレジスタ２、及びＲＡＭ等の主記憶装置（以下「メモリ」と称す）３を備えている。
【００１２】
メモリ３に書き込むべきデータＤ１は、データバス５を介してメモリ３に送られる。また、データＤ１は、アドレス演算部１にも入力される。アドレス演算部１は、データＤ１と、インデックスレジスタ２から送られてきたインデックス値Ｉ１とに基づいて、データＤ１を書き込むためにアクセスすべきメモリ３のアドレスＡ１を決定する。アドレス演算部１におけるアドレスＡ１の決定手法については、後に詳述する。
【００１３】
アドレスＡ１は、アドレスバス４を介してメモリ３に送られる。データバス５を介してメモリ３に送られてきたデータＤ１は、アドレスＡ１で与えられたメモリ３のメモリ領域に書き込まれる。
【００１４】
以下、アドレス演算部１におけるアドレス指定方法について説明する。アドレス演算部１は、インデックスレジスタ２から入力したインデックス値Ｉ１を、データＤ１のビット数に応じた値で除算する。ここで、「データＤ１のビット数に応じた値」とは、データＤ１が１ビットデータである場合は「８」、２ビットデータである場合は「４」、４ビットデータである場合は「２」、８ビットデータである場合は「１」、Ｍビットデータである場合は「８／Ｍ」である。
【００１５】
また、インデックス値Ｉ１は、上記「データＤ１のビット数に応じた値」以上の自然数であり、例えばデータが入力される度にインクリメントされることによって、各データごとに異なる値をとる。
【００１６】
アドレス演算部１は、インデックス値Ｉ１を「データＤ１のビット数に応じた値」で除算し、除算の商に基づいてメモリ３のバイト番号を指定する。また、除算の余りに基づいてバイト番号内のビット番号を指定する。
【００１７】
一例として、データＤ１が１ビットデータである場合、「データＤ１のビット数に応じた値」は「８」となる。データＤ１に対応するインデックス値Ｉ１が例えば「１３」とすると、アドレス演算部１は、１３÷８なる演算を実行し、商が「１」で余りが「５」なる解を得る。従って、この場合は、データＤ１を書き込むべきメモリ３のアドレスＡ１として、「第１バイトの第５ビット」というアドレスを指定する。
【００１８】
よって、この例の場合は、データバス５を介してメモリ３に送られてきた１ビットのデータＤ１は、アドレスＡ１で指定された「第１バイトの第５ビット」というメモリ領域に書き込まれることとなる。
【００１９】
他の例として、データＤ１が２ビットデータである場合、「データＤ１のビット数に応じた値」は「４」となる。データＤ１に対応するインデックス値Ｉ１が例えば「８」とすると、アドレス演算部１は、８÷４なる演算を実行し、商が「２」で余りが「０」なる解を得る。従って、この場合は、データＤ１を書き込むべきメモリ３の先頭アドレスＡ１として、「第２バイトの第０（２×０）ビット」というアドレスを指定する。
【００２０】
よって、この例の場合は、データバス５を介してメモリ３に送られてきた２ビットのデータＤ１は、第２バイトの第０ビット及び第１ビットのメモリ領域に書き込まれることとなる。
【００２１】
さらに他の例として、データＤ１が４ビットデータである場合、「データＤ１のビット数に応じた値」は「２」となる。データＤ１に対応するインデックス値Ｉ１が例えば「１５」とすると、アドレス演算部１は、１５÷２なる演算を実行し、商が「７」で余りが「１」なる解を得る。従って、この場合は、データＤ１を書き込むべきメモリ３の先頭アドレスＡ１として、「第７バイトの第４（４×１）ビット」というアドレスを指定する。
【００２２】
よって、この例の場合は、データバス５を介してメモリ３に送られてきた４ビットのデータＤ１は、第７バイトの第４ビット〜第７ビットのメモリ領域に書き込まれることとなる。
【００２３】
図２は、いずれも１ビットのデータＤ１〜Ｄ８がメモリ３に書き込まれた状態を示す模式図である。図２の（Ａ）は、本実施の形態に係るアドレス指定方法が適用された例であり、同一バイトの各ビットにデータＤ１〜Ｄ８が書き込まれている。このように、本実施の形態に係るアドレス指定方法によれば、細かなアドレス指定が可能となるため、メモリ領域の無駄は生じず、メモリ領域の効率的な使用が実現される。
【００２４】
一方、図２の（Ｂ）は、従来のポインタを用いたアドレス指定方法が適用された例である。メモリのアドレスをバイト単位でしか指定できないため、データＤ１〜Ｄ８は、異なるバイトの各第０ビットにそれぞれ書き込まれている。従って、各バイトの第１ビット〜第７ビットのメモリ領域が無駄になっている。
【００２５】
図３は、図１に示したアドレス演算部１による処理の流れを示すフローチャートである。モジュール関数は、ヘッダファイルとして作成されている。ｍａｉｎ関数からモジュール関数を呼び出した後、モジュール関数で使用する変数を宣言する。その後、モジュール関数による処理として、上記で説明した通り、インデックスレジスタ２からのインデックス値Ｉ１の取り込み処理、及び、データＤ１のデータサイズの選定処理が行われる。また、インデックス値Ｉ１を「データＤ１のビット数に応じた値」で除算し、除算の商に基づいてバイト割付を行い、除算の余りに基づいてビット割付を行う。
【００２６】
このように、インデックス値の取得やデータサイズの選定をモジュール関数によって処理することにより、ｍａｉｎ関数からモジュール関数を呼び出すだけで、データサイズを気にすることなくアドレスの指定を容易に行うことができる。
【図面の簡単な説明】
【００２７】
【図１】本発明の実施の形態に係るコンピュータシステムの一部を示すブロック図である。
【図２】いずれも１ビットの複数のデータがメモリに書き込まれた状態を示す模式図である。
【図３】図１に示したアドレス演算部における処理の流れを示すフローチャートである。
【符号の説明】
【００２８】
１  アドレス演算部
２  インデックスレジスタ
３  メモリ
【図１】
2007058521.tif 000003
【図２】
2007058521.tif 000004
【図３】
2007058521.tif 000005