(57)【特許請求の範囲】
【請求項１】
演算回路とリザルトレジスタ（ＲＲ）、各プログラム構成単位（ＰＯＵ）が使用するデータ領域の先頭アドレスを示すスタックポインタ（ＳＰ）、インスタンス
領域の先頭アドレスを示すインスタンスポインタ（ＩＰ）、プログラム構成単位（ＰＯＵ）のプログラム領域の先頭アドレスを示すプログラムカウンタ（ＰＣ）を有して、アプリケーションプログラムのマシンコードを実行する演算ＡＳＩＣと、
演算対象になるデータを格納したデータメモリと、
アプリケーションプログラムのマシンコードを格納したプログラムメモリとを備え、
前記データメモリは、インスタンスポインタ（ＩＰ）により各プログラム構成単位（ＰＯＵ）が使用するインスタンス領域、スタックポインタ（ＳＰ）により現在の使用アドレスが示されるスタック領域を有し、
前記プログラムメモリは、プログラムカウンタ（ＰＣ）により実行中のアプリケーションプログラムのマシンコード位置を示すプログラム構成単位（ＰＯＵ）の実行領域を有し、
前記インスタンス領域に置かれたプログラム構成単位（ＰＯＵ）のローカル変数は、インスタンスポインタ（ＩＰ）が示すアドレスからの相対アドレスでアクセスするマシンコードで設定するよう構成し、
前記データメモリに格納される配列データを含むデータに対して、目的とするデータ要素にアクセスするプログラマブルコントローラのデータアクセス方式であって、
前記演算ＡＳＩＣは、
スタックポインタ（ＳＰ）が示すスタック領域に、アクセス対象となるデータの配列構成、配列要素ｉ番号、配列要素ｊ番号、配列要素ｉサイズ、配列要素ｊサイズおよび目的要素サイズの各項目をパラメータとしてプッシュ命令で予め格納しておく手段と、
前記スタック上の各パラメータに従って、目的とするデータ要素アドレスをオペランド＋（配列要素ｉ番号）＊（配列要素ｉサイズ）＋（配列要素ｊ番号）＊（配列要素ｊサイズ）で計算し、前記リザルトレジスタ（ＲＲ）に対してデータ要素のロード／ストアを実行する手段と、
を備えたことを特徴とするプログラマブルコントローラのデータアクセス方式。
【請求項２】
演算回路とリザルトレジスタ（ＲＲ）、各プログラム構成単位（ＰＯＵ）が使用するデータ領域の先頭アドレスを示すスタックポインタ（ＳＰ）、インスタンス
領域の先頭アドレスを示すインスタンスポインタ（ＩＰ）、プログラム構成単位（ＰＯＵ）のプログラム領域の先頭アドレスを示すプログラムカウンタ（ＰＣ）を有して、アプリケーションプログラムのマシンコードを実行する演算ＡＳＩＣと、
演算対象になるデータを格納したデータメモリと、
アプリケーションプログラムのマシンコードを格納したプログラムメモリとを備え、
前記データメモリは、インスタンスポインタ（ＩＰ）により各プログラム構成単位（ＰＯＵ）が使用するインスタンス領域、スタックポインタ（ＳＰ）により現在の使用アドレスが示されるスタック領域を有し、
前記プログラムメモリは、プログラムカウンタ（ＰＣ）により実行中のアプリケーションプログラムのマシンコード位置を示すプログラム構成単位（ＰＯＵ）の実行領域を有し、
前記インスタンス領域に置かれたプログラム構成単位（ＰＯＵ）のローカル変数は、インスタンスポインタ（ＩＰ）が示すアドレスからの相対アドレスでアクセスするマシンコードで設定するよう構成し、
前記データメモリに格納される構造データを含むデータに対して、目的とするデータ要素にアクセスするプログラマブルコントローラのデータアクセス方式であって、
前記演算ＡＳＩＣは、
前記スタックポインタ（ＳＰ）が示すスタック領域に、アクセス対象となるデータの構造データ構成、親要素オフセット、子要素オフセット、配列要素番号、配列要素サイズおよび目的要素サイズの各項目をパラメータとしてプッシュ命令で予め格納しておく手段と、
前記スタック上の各パラメータに従って、目的とするデータ要素アドレスを計算し、前記リザルトレジスタ（ＲＲ）に対してデータ要素のロード／ストアを実行する手段とを備えたことを特徴とするプログラマブルコントローラのデータアクセス方式。
【請求項３】
前記演算ＡＳＩＣは、前記配列データまたは構造データがビット単位データになる場合、データ要素サイズの単位をビットにしてロード／ストアを実行することを特徴とする請求項１または２に記載のプログラマブルコントローラのデータアクセス方式。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルコントローラ（ＰＬＣ）に係り、特に、配列データや構造データに対し、目的とするデータ要素にアクセスする方式に関する。
【背景技術】
【０００２】
現在、ＩＥＣ６１１３１−３規格でプログラマブルコントローラ言語が規定されている。我が国においても、ＩＥＣ６１１３１−３の初版がＪＩＳＢ３５０３として規定されている。ＩＥＣ６１１３１−３ではデータの型をデータタイプと呼んでおり、データタイプは基本データ型と、基本データ型を組み合わせた派生データ型に分類される。基本データ型は予め用意されたデータ型であり、ＢＯＯＬ，ＢＹＴＥ，ＩＮＴ，ＷＯＲＤ，ＲＥＡＬなどが用意されている。派生データ型には直接派生データ型、配列データ型、構造データ型、列挙データ型、部分範囲データ型がある。この中で配列データ型と構造データ型は複数のデータ要素から構成されるデータ型である。
【０００３】
配列データ型の定義は図２２に示す宣言文で行われる。ここで、ＡＲＲＡＹ１はＩＮＴ型データを要素とする１０要素の一次元配列であり、ＡＲＲＡＹ２はＵＤＩＮＴ型データを要素とする１０×２０要素の二次元配列である。
【０００４】
ＡＲＲＡＹ１を使ったＳＴ言語プログラムの例を図２３に示す。このプログラムではＩｎｄｅｘという変数で配列ＡＲＲＡＹ１１の要素番号を示すようになっている。このようなプログラムをプログラマブルコントローラが実行するためには間接アドレス命令を使用する必要がある。例えば、インデックス用レジスタを使って、配列のデータ要素を示すことができる。図２４では配列の先頭を示すレジスタとインデクスレジスタによって、データ要素５を示すことができる。
【０００５】
図２５は配列データ型を要素とした構造データ型の場合を示す。この例はＩＮＴ，ＷＯＲＤ，ＵＤＩＮＴの３つの基本データ型を組み合わせて配列データ型を構成し、この配列データ型を要素とする構造データ型のものである。即ち、配列データ型の構造データ型である。この構造データ型の場合においても、配列の先頭を示すレジスタとインデクスレジスタによって、データ要素を示すことができる。
【０００６】
なお、アクセス方法として、メモリに格納されるデータのアドレスが変更された場合、アプリケーションプログラムを変更することなく、データアクセス専用のプログラムのデータを書き換えることで対処する方法がある（例えば、特許文献１参照）。
【特許文献１】特開２０００−２５０６１２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
前記に示すような、配列データ型や構造データ型の配列データについては、配列の先頭を示すレジスタとインデックス用レジスタを使って目的とするデータ要素のアドレスを示すことができ、当該データ要素に対するロード／ストアなどを可能にする。
【０００８】
しかし、インデックス用レジスタを使ったアクセス方法は、要素のデータサイズが固定の場合には有効であるが、要素のデータサイズが可変の場合や二次元配列の場合には対応できない。
【０００９】
本発明の目的は、二次元配列やデータサイズが可変のデータに対するデータ要素のアドレス算定を容易にしてそのロード／ストアができるプログラマブルコントローラのデータアクセス方式を提供することにある。
【課題を解決するための手段】
【００１０】
前記の課題を解決するため、本発明は、スタックポインタが示すスタック領域に、アクセス対象となる配列データまたは構造データの各項目をパラメータとしてプッシュ命令で予め格納しておき、これら各パラメータに従って、目的とするデータ要素アドレスを計算し、データ要素のロード／ストアを実行するようにしたもので、以下の方式を特徴とする。
【００１１】
（１）演算回路とリザルトレジスタ（ＲＲ）、各プログラム構成単位（ＰＯＵ）が使用するデータ領域の先頭アドレスを示すスタックポインタ（ＳＰ）、インスタンス領域の先頭アドレスを示すインスタンスポインタ（ＩＰ）、プログラム構成単位（ＰＯＵ）のプログラム領域の先頭アドレスを示すプログラムカウンタ（ＰＣ）を有して、アプリケーションプログラムのマシンコードを実行する演算ＡＳＩＣと、
演算対象になるデータを格納したデータメモリと、
アプリケーションプログラムのマシンコードを格納したプログラムメモリとを備え、
前記データメモリは、インスタンスポインタ（ＩＰ）により各プログラム構成単位（ＰＯＵ）が使用するインスタンス領域、スタックポインタ（ＳＰ）により現在の使用アドレスが示されるスタック領域を有し、
前記プログラムメモリは、プログラムカウンタ（ＰＣ）により実行中のアプリケーションプログラムのマシンコード位置を示すプログラム構成単位（ＰＯＵ）の実行領域を有し、
前記インスタンス領域に置かれたプログラム構成単位（ＰＯＵ）のローカル変数は、インスタンスポインタ（ＩＰ）が示すアドレスからの相対アドレスでアクセスするマシンコードで設定するよう構成し、
前記データメモリに格納される配列データを含むデータに対して、目的とするデータ要素にアクセスするプログラマブルコントローラのデータアクセス方式であって、
前記演算ＡＳＩＣは、スタックポインタ（ＳＰ）が示すスタック領域に、アクセス対象となるデータの配列構成、配列要素ｉ番号、配列要素ｊ番号、配列要素ｉサイズ、配列要素ｊサイズおよび目的要素サイズの各項目をパラメータとしてプッシュ命令で予め格納しておく手段と、
前記スタック上の各パラメータに従って、目的とするデータ要素アドレスをオペランド＋（配列要素ｉ番号）＊（配列要素ｉサイズ）＋（配列要素ｊ番号）＊（配列要素ｊサイズ）で計算し、前記リザルトレジスタ（ＲＲ）に対してデータ要素のロード／ストアを実行する手段とを備えたことを特徴とする。
【００１２】
（２）演算回路とリザルトレジスタ（ＲＲ）、各プログラム構成単位（ＰＯＵ）が使用するデータ領域の先頭アドレスを示すスタックポインタ（ＳＰ）、インスタンス領域の先頭アドレスを示すインスタンスポインタ（ＩＰ）、プログラム構成単位（ＰＯＵ）のプログラム領域の先頭アドレスを示すプログラムカウンタ（ＰＣ）を有して、アプリケーションプログラムのマシンコードを実行する演算ＡＳＩＣと、
演算対象になるデータを格納したデータメモリと、
アプリケーションプログラムのマシンコードを格納したプログラムメモリとを備え、
前記データメモリは、インスタンスポインタ（ＩＰ）により各プログラム構成単位（ＰＯＵ）が使用するインスタンス領域、スタックポインタ（ＳＰ）により現在の使用アドレスが示されるスタック領域を有し、
前記プログラムメモリは、プログラムカウンタ（ＰＣ）により実行中のアプリケーションプログラムのマシンコード位置を示すプログラム構成単位（ＰＯＵ）の実行領域を有し、
前記インスタンス領域に置かれたプログラム構成単位（ＰＯＵ）のローカル変数は、インスタンスポインタ（ＩＰ）が示すアドレスからの相対アドレスでアクセスするマシンコードで設定するよう構成し、
前記データメモリに格納される構造データを含むデータに対して、目的とするデータ要素にアクセスするプログラマブルコントローラのデータアクセス方式であって、
前記演算ＡＳＩＣは、前記スタックポインタ（ＳＰ）が示すスタック領域に、アクセス対象となるデータの構造データ構成、親要素オフセット、子要素オフセット、配列要素番号、配列要素サイズおよび目的要素サイズの各項目をパラメータとしてプッシュ命令で予め格納しておく手段と、
前記スタック上の各パラメータに従って、目的とするデータ要素アドレスを計算し、前記リザルトレジスタ（ＲＲ）に対してデータ要素のロード／ストアを実行する手段とを備えたことを特徴とする。
【００１３】
（３）前記演算ＡＳＩＣは、前記配列データまたは構造データがビット単位データになる場合、データ要素サイズの単位をビットにしてロード／ストアを実行することを特徴とする。
【発明の効果】
【００１４】
以上のとおり、本発明によれば、スタックポインタが示すスタック領域に、アクセス対象となる配列データまたは構造データの各項目をパラメータとしてプッシュ命令で予め格納しておき、これら各パラメータに従って、目的とするデータ要素アドレスを計算し、データ要素のロード／ストアを実行するようにしたため、二次元配列やデータサイズが可変のデータに対するデータ要素のアドレス算定を容易にしてそのロード／ストアができる。
【００１５】
具体的には、
（１）一次元配列、二次元配列、構造データの配列で目的とするデータ要素が１つの命令でロード／ストアすることができる。
【００１６】
（２）構造データ、構造データの構造データ、配列の構造データで目的とするデータ要素が１つの命令でロード／ストアすることができる。
【００１７】
（３）配列や構造体の目的とするデータ要素アドレスを求めるために、コンパイラが複雑な計算をするためのマシンコードを生成しなくても良い。
【００１８】
（４）ＢＯＯＬデータの配列や構造データに対しても、同様な命令が使用できる。
【００１９】
（５）演算速度を速くするためには、配列や構造データの構成を確認して、アドレス計算をするようにすれば良いが、演算速度が遅くても良い場合には１つの計算式でまとめることができる。
【発明を実施するための最良の形態】
【００２０】
図１は、プログラマブルコントローラの要部構成図である。演算ＡＳＩＣ１０は、プログラマブルコントローラに組み込むアプリケーションプログラムのマシンコードを実行するためのものであり、四則演算などの各種演算を行う演算回路１１と、各種レジスタ１２〜１６及びその他制御回路１７から構成される。レジスタにはアキュムレータに相当するリザルトレジスタ（ＲＲ）１２、スタックポインタ（ＳＰ）１３、インスタンスポインタ（ＩＰ）１４、プログラムカウンタ（ＰＣ）１５、その他レジスタ１６を具備する。その他レジスタ１６は用途により様々なものがある。
【００２１】
また、プログラマブルコントローラには、演算対象になるデータを格納したデータメモリ２０と、アプリケーションプログラムのマシンコードを格納したプログラムメモリ３０を設け、演算ＡＳＩＣ１０からアクセスできるようにしている。
【００２２】
データメモリ２０には、図２の（ａ）に示すように、アプリケーションプログラムの実行単位毎（タスク毎）にスタック領域が確保されており、プログラム構成単位（ＰＯＵ）の起動時の戻りアドレスのセーブや、タスク切り替え時の各種レジスタのセーブで使用される。現在のスタック領域の使用アドレスはスタックポインタ（ＳＰ）が示すことになる。各プログラム構成単位（ＰＯＵ）が使用するデータ領域（インスタンス）の先頭アドレスを示すのがインスタンスポインタ（ＩＰ）である。ＰＯＵを実際に使用する場合には、ＰＯＵをインスタンス化することができる。インスタンス化するためには、用途毎にそれぞれ別々のインスタンス領域を確保する必要がある。インスタンスポインタ（ＩＰ）は各用途毎に異なるデータ領域の先頭を示すものである。
【００２３】
プログラムメモリ３０では、図２の（ｂ）に示すように、その中で、現在実行中のアプリケーションプログラムのマシンコード位置をプログラムカウンタ（ＰＣ）で示す。
【００２４】
図２では、あるＰＯＵ実行中の各種レジスタとメモリの関係を示したものである。ＩＰはその機能を果たすＰＯＵ実行中は固定である。ＳＰはＰＯＵ起動中ではスタックポインタとしての働きを行う。ＰＣはＰＯＵの演算実行順番に従って変化する。ＰＯＵのローカル変数はＰＯＵインスタンス領域に置かれ、インスタンスポインタ（ＩＰ）が示すアドレスからの相対アドレスでアクセスするようにマシンコードが設定される。
【００２５】
例えば、図３では、ＩＮＴ型変数をアクセスする場合はＩＰに０を加算したアドレスを使用する。また、ＷＯＲＤ型変数をアクセスする場合には、ＩＰに２を加算したアドレスを使用する。更に、ＢＯＯＬ型変数をアクセスする場合はＩＰに１２を加算した１６ビットデータの中のビット位置０を使用することになる。
【００２６】
このようなインスタンス領域のアクセスを実現するためのマシンコードは図４に示すデータ構造とする。同図で、オペコードは演算の種類を指定するもので、ロード、ストア、四則演算などの演算種別を指定することになる。アドレッシングモードは演算するデータをアクセスする方法を指定するもので、レジスタ種別とオペランドの組み合わせでどのようなアドレッシングをするかを指定するものである。
【００２７】
例えば、データメモリ２０の物理アドレスでアクセスする場合はオペランドに実アドレスを設定する。レジスタ間接でアクセスする場合は、レジスタ種別で使用するレジスタを指定し、オペランドにはオフセットアドレスが設定される。また、定数を使用するようなアドレッシングモードもある。
【００２８】
配列データや構造データはデータメモリ２０内に置かれる。これらデータはデータメモリ２０の実アドレスに割り付けられたり、ＰＯＵのインスタンス領域に割り付けられることもある。
【００２９】
以下、配列データまたは構造データに対し、目的とするデータ要素のアドレスを算定するための一般的な手法を説明する。
【００３０】
（１）一次元配列
一次元配列は同じデータタイプの要素が要素数だけ並ぶ。図５は要素数Ｎの一次元配列の例である。この配列の１つの要素をアクセスするためには配列の先頭アドレスと要素のサイズと要素番号がわかれば良い。
【００３１】
（２）二次元配列
二次元配列は、同じデータタイプの要素が二次元に配置される。図６はＮ×Ｍの二次元配列の例である。この配列の１つの要素をアクセスするためには配列の先頭アドレスと要素のサイズと要素番号（２種類）がわかれば良い。
【００３２】
（３）構造データ
複数のデータタイプから構成されたデータのまとまりである。図７はＩＮＴ，ＷＯＲＤ，ＤＩＮＴから成る構造データの例である。この構造データの１つの要素をアクセスするためには構造データの先頭アドレスと目的とするデータ要素のサイズと目的とするデータ要素までの相対オフセットアドレスがわかれば良い。
【００３３】
（４）構造データの配列
配列の要素が構造データになっているものである。図８はＩＮＴ，ＷＯＲＤ，ＵＩＮＴ，ＤＩＮＴから成る構造データを要素とする要素数Ｎの場合の例である。この構造データの１つの要素をアクセスするためには、構造データの先頭アドレスと目的とするデータ要素のサイズと目的とするデータ要素が含まれる配列の要素番号とその配列先頭から目的とするデータ要素までの相対オフセットアドレスがわかれば良い。
【００３４】
（５）配列の構造データ
構造データの１要素が配列になっているものである。図９は、要素として配列データ１と配列データ２を含む構造データの例である。この構造データの１つの要素をアクセスするためには、構造データの先頭アドレスと目的とするデータ要素のサイズと目的とするデータ要素が含まれる配列までの相対オフセットアドレスとその配列での目的とするデータ要素の要素番号がわかれば良い。
【００３５】
（６）構造データの構造データ
構造データの１要素が構造データになっているものである。図１０は、要素として構造データ１と構造データ２を含む構造データの例である。この構造データの１つの要素をアクセスするためには、構造データの先頭アドレスと目的とするデータ要素のサイズと目的とするデータ要素が含まれ構造データまでの相対オフセットアドレスとその構造データでの目的とするデータ要素までの相対オフセットアドレスがわかれば良い。
【００３６】
以上のように、配列データまたは構造データにおいて、目的とするデータ要素のアドレスを算定するためには、コンパイラが要素番号や相対オフセットアドレスを使って、計算していた。しかし、配列の要素番号が変数になっているような場合は非常に複雑な計算が必要となる。例えば、図１中のその他レジスタ１６に変数となる要素番号を格納して、そのレジスタを使ってアドレス計算するようなマシンコードを生成する必要があり、複雑になってしまう。
【００３７】
以下に示す実施形態ではこれらの計算を簡略にする命令を用意して、コンパイラの処理を簡略化し、演算速度の向上を得るものである。
【００３８】
＜実施形態１＞配列データ要素のロード／ストア
本実施形態では、一次元配列、二次元配列、構造データの配列において、目的とするデータ要素に対するロード／ストア命令を実現する。ロードとは目的とするデータ要素のデータをリザルトレジスタ１２にコピーする動作であり、ストアはその逆向きのコピー動作である。目的とするデータ要素を特定するためのパラメータは複数あり、マシンコード内にすべてのパラメータを置くことは困難である。そのため、必要なパラメータはスタックにプッシュしてから、該当命令を実行するようにする。以下に、具体例を示す。
【００３９】
図１１は、配列データ要素のロード／ストア命令実行時のスタックの構成である。演算ＡＳＩＣ１０は、スタックポインタ（ＳＰ）が示すスタック領域に、配列構成、配列要素ｉ番号、配列要素ｊ番号、配列要素ｉサイズ、配列要素ｊサイズおよび目的要素サイズの各項目をプッシュ命令で予め格納しておく。マシンコードを図１２に示す。図１３は二次元配列の例であり、先頭のオペランドはマシンコードのアドレッシングモードとレジスタ種別とオペランドの内容によって決まる。
【００４０】
図１４はスタック内の各項目についての説明である。また、図１５は一次元配列、二次元配列、構造データの配列に対するスタック内情報の割り付けをまとめて示す。
【００４１】
ロード／ストア命令は、スタック上の各種パラメータに従って、目的とするデータ要素アドレスを図１６に示す式で計算して、ロード／ストアを実行する。
【００４２】
このように、スタックに図１５のようにパラメータをセットすることで、３種類の配列の目的とするデータ要素のロード／ストアが実施できる。演算速度を早くする必要がなければ、配列構成によらず図１６中の配列構成＝２の式により、すべての配列構成で目的とするデータ要素のアドレスを算定することができる。
【００４３】
＜実施形態２＞構造データ要素のロード／ストア
本実施形態では、構造データ、構造データの構造データ、配列の構造データにおいて、目的とするデータ要素に対するロード／ストア命令を実現する。ロードとは目的とするデータ要素のデータをリザルトレジスタ１２にコピーする動作であり、ストアはその逆向きのコピー動作である。これら構造データの目的とするデータ要素を指定するためのパラメータは複数あり、マシンコード内にすべてのパラメータを置くことは困難である。そのため、必要なパラメータはスタックにプッシュしてから、該当命令を実行するようにする。以下に、具体例を示す。
【００４４】
図１７は、本命令実施時のスタックの構成である。演算ＡＳＩＣ１０は、スタックポインタ（ＳＰ）が示すスタック領域に、構造データ構成、親要素オフセット、子要素オフセット、配列要素番号、配列要素サイズおよび目的要素サイズの各項目をプッシュ命令で予め格納しておく。マシンコードは前記の図１２に示すものと同じである。図１８は配列の構造データの例であり、先頭のオペランドはマシンコードのアドレッシングモードとレジスタ種別とオペランドの内容によって決まる。
【００４５】
図１９はスタック内の各項目についての説明である。また、図２０は構造データ、構造データの構造データ、配列の構造データに対するスタック内情報の割り付けをまとめて示す。
【００４６】
ロード／ストア命令は、スタック上の各種パラメータに従って、目的とするデータ要素アドレスを図２１に示す式で計算して、ロード／ストアを実行する。
【００４７】
このように、スタックに図２０のようにパラメータをセットすることで、３種類の構造データの目的とするデータ要素のロード／ストアが実施できる。
【００４８】
＜実施形態３＞
実施形態１、実施形態２はバイト単位のデータの配列や構造データの目的とするデータ要素に対するロード／ストアであるが、ビット単位データであるＢＯＯＬデータの配列や構造体においても、要素サイズの単位をビットにした命令を用意すれば、実施形態１や実施形態２で示した方法で目的とするデータ要素に対するロード／ストア命令が実施できる。
【図面の簡単な説明】
【００４９】
【図１】本発明の実施形態を示すプログラマブルコントローラの要部構成図。
【図２】データメモリとプログラムメモリに設定する領域。
【図３】型変数のアドレス例。
【図４】命令のマシンコードの例。
【図５】要素数Ｎの一次元配列の例。
【図６】Ｎ×Ｍの二次元配列の例。
【図７】ＩＮＴ，ＷＯＲＤ，ＤＩＮＴから成る構造データの例。
【図８】ＩＮＴ，ＷＯＲＤ，ＵＩＮＴ，ＤＩＮＴから成る構造データの例。
【図９】配列データ１と配列データ２を含む構造データの例。
【図１０】構造データ１と構造データ２を含む構造データの例。
【図１１】配列データ要素の命令実行時のスタックの構成。
【図１２】命令のマシンコードの例。
【図１３】二次元配列の例。
【図１４】スタック内の各項目説明。
【図１５】一次元配列、二次元配列、構造データの配列に対するスタック内情報の割り付け。
【図１６】配列の種類によるアドレス計算式。
【図１７】構造データ要素の命令実行時のスタックの構成。
【図１８】配列の構造データの例。
【図１９】スタック内の各項目説明。
【図２０】構造データ、構造データの構造データ、配列の構造データに対するスタック内情報の割り付け。
【図２１】構造データの種類によるアドレス計算式。
【図２２】配列データ型の定義例。
【図２３】ＳＴ言語プログラムの例。
【図２４】配列の先頭を示すレジスタとインデクスレジスタによるデータ要素の特定。
【図２５】配列データ型を要素とした構造データ型の例。
【符号の説明】
【００５０】
１０  演算ＡＳＩＣ
２０  データメモリ
３０  プログラムメモリ
１１  演算回路
１２  リザルトレジスタ（ＲＲ）
１３  スタックポインタ（ＳＰ）
１４  インスタンスポインタ（ＩＰ）
１５  プログラムカウンタ（ＰＣ）
１６  その他レジスタ
１７  その他制御回路
【図１】
0005206091.tif 000002
【図２】
0005206091.tif 000003
【図３】
0005206091.tif 000004
【図４】
0005206091.tif 000005
【図５】
0005206091.tif 000006
【図６】
0005206091.tif 000007
【図７】
0005206091.tif 000008
【図８】
0005206091.tif 000009
【図９】
0005206091.tif 000010
【図１０】
0005206091.tif 000011
【図１１】
0005206091.tif 000012
【図１２】
0005206091.tif 000013
【図１３】
0005206091.tif 000014
【図１４】
0005206091.tif 000015
【図１５】
0005206091.tif 000016
【図１６】
0005206091.tif 000017
【図１７】
0005206091.tif 000018
【図１８】
0005206091.tif 000019
【図１９】
0005206091.tif 000020
【図２０】
0005206091.tif 000021
【図２１】
0005206091.tif 000022
【図２２】
0005206091.tif 000023
【図２３】
0005206091.tif 000024
【図２４】
0005206091.tif 000025
【図２５】
0005206091.tif 000026