(57)【要約】      （修正有）【課題】追加のソフトウェアおよびハードウェア等の資源が少なくてすみ、汎用的な方法で、プログラマブルコントローラのデバッグを実現し、加えてブレーク（実行停止）時におけるデータアクセス検査処理に掛かる負荷を低減する。【解決手段】ソースコードをコンパイル時に、機械語オブジェクトにＮＯＰを挿入する。この挿入箇所は、ソースコードのシーケンス命令一つに対応する機械語命令群の前であり、ＮＯＰとその位置の関係を切れ目テーブルとする。また、機械語命令とアドレスの関係も抽出し、ユーザがデータアクセスする際の条件から、対象の機械語命令の一覧をテーブル化する。該テーブルと切れ目テーブルを用いて、機械語オブジェクトの必要な箇所のＮＯＰを分岐命令に書き替えればよく、負荷量の少ないデバッグ環境を実現する。【選択図】図１
2008204023.tif 000002
【特許請求の範囲】
【請求項１】
シーケンス言語で記述された第１のプログラムをプログラマブルコントローラを構成するマイクロコンピュータが解釈実行できるマシン語で記述された第２のプログラムに変換する機能と、前記シーケンス言語の命令単位に対応して変換された前記マシン語群の各々の先頭に前記マシン語のＮＯＰ（ノーオペレーション）命令を挿入する機能と、前記第２のプログラムの先頭からの個々の前記ＮＯＰ命令までの相対位置を列挙した切れ目テーブルを生成する機能と、前記第２のプログラムのブレーク（実行停止）位置を前記シーケンス言語の命令単位で指定できるデバッグサポート機能を含み、前記ＮＯＰ命令を挿入後の前記第２のプログラムと前記切れ目テーブルとブレーク位置を特定する情報とを、ターゲットであるプログラマブルコントローラに送信するプログラミング支援装置と、
前記プログラミング支援装置から受信したデータより前記ブレーク位置を決定し、該ブレーク位置に従って前記ＮＯＰ命令をデバッグ処理への分岐命令に置き替えて前記ブレークを実現する機能を備えた前記プログラマブルコントローラと、
を有することを特徴とするプログラマブルコントローラシステム。
【請求項２】
請求項１に記載のプログラマブルコントローラシステムにおいて、
前記プログラミング支援装置は、前記シーケンス言語の命令単位に対応して変換された前記マシン語群ごとの実行順番とアドレス情報とを関連付ける命令−アドレス対応表を生成する機能を有し、
前記デバッグサポート機能は、前記命令−アドレス対応表より任意のアドレスにアクセスしたときにブレーク対象を特定する前記実行順番を全て抽出する機能を有すること、
を特徴とするプログラマブルコントローラシステム。
【請求項３】
汎用のマイクロコンピュータを使用するプログラマブルコントローラのデバッグ方法であって、
シーケンス言語で記述された第１プログラムを前記マイクロコンピュータのマシン語で記述された第２のプログラムに変換するときに、前記第２のプログラムにおける前記第１のプログラムの命令単位の切れ目に、前記マシン語のＮＯＰ（ノンオペレーション）命令を挿入するステップと、
前記変換時に、前記マシン語の各命令の実行順番と該命令がアクセスするアドレスの情報とを、命令−アドレス対応表として生成するステップと、
デバッグ時に、任意のアドレスにアクセスしたときのブレーク（実行停止）対象となるブレーク位置を特定する情報を、命令−アドレス対応表より全て抽出するステップと、
前記命令−アドレス対応表と前記ブレーク位置を特定する情報とから、前記ＮＯＰ命令を挿入後の前記第２のプログラムにおけるブレーク位置を特定し、前記ＮＯＰ命令を挿入後の前記第２のプログラムのＮＯＰ命令をデバッグ処理へ分岐する分岐命令に置き替えるステップと、
を有することを特徴とするプログラマブルコントローラのデバッグ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルコントローラのソフトウェア開発におけるデバッグ時のブレーク（命令停止）に関り、特にコンパイル時に命令とアドレスの関係を抽出することによりアドレスを対象としたブレーク設定を効率的に実行するプログラマブルコントローラシステム、プログラマブルコントローラのデバッグ方法に関する。
【背景技術】
【０００２】
従来、プログラマブルコントローラはシーケンス命令実行を高速に行わせるための専用ハードウェア（大規模専用ＬＳＩなどに代表される）を備えるものが主流であった。専用ハードウェアであるので、デバッグ用のブレーク、ステップ実行もハードウェアによってサポートされていた。このようなハードウェアの場合、ブレーク設定された位置の命令を特殊な命令に置き換えて、割込みを発生させブレーク成立チェックルーチンへの分岐、成立した場合のブレーク状態を作り出すことが可能であった。
【０００３】
しかし、（１）専用ハードウェアは高価である、（２）専用のマシン語体系をもちシステムプログラム開発が比較的困難である、というデメリットも存在していた。
近年、パーソナルコンピュータ、携帯端末などの普及により、市販の汎用ＣＰＵの技術革新が進み、高速実行が可能なＣＰＵを非常に安価に入手することが可能になってきた。また、汎用であるためファームウェアの開発ツールを市場から調達できるようになってきたため、汎用ＣＰＵを使ったプログラマブルコントローラも作られるようになってきている。
【０００４】
このようなプログラマブルコントローラシステムにおいては、ユーザはプログラミング支援装置にてプログラミングを行い、その後、プログラムをプログラマブルコントローラに転送してから実行させて、プログラムのテストを行う。
プログラムのテストにおいては、プログラミング支援装置におけるデバッグサポート機能も重要になるが、中でも指定した条件、例えば任意の命令位置で実行を一時中断するブレーク機能（条件停止とも呼ばれる）や、ブレーク状態からシーケンス命令を１つずつ実行してはブレークするステップ機能などが要求される。
【０００５】
特許文献１では、開発支援装置で制御プログラム（シーケンス命令）を作成し、該プログラムをコンパイルしてマイクロプロセッサ上で直接実行可能な実行コード（機械語）を作成する方法が記載されている。ここでは、シーケンス命令１つにつき、数個の機械語の組合せによってシーケンス命令の実行を実現する例が示されている。
なお、プログラマブルコントローラにおけるシーケンス命令は、ラダー図、テキスト記述言語などで代表される言語命令により構成されるが、本明細書中では特に断らない限り、プログラマブルコントローラにおける記述言語規格ＩＥＣ６１１３１−３に準ずるものとして言語命令の説明は割愛する。
【特許文献１】特開２００２−９９３１２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来の方法においては、シーケンス命令単位でのブレーク指定、ステップ実行機能の実現要求の実現方法として、デバッガと呼ばれるソフトウェアをプログラミング支援装置に含み、かつ内部ではＣ言語ソースコード、Ｃソースデバッガ等を内蔵させており、制御プログラムの作成のために必要なハードウェア資源の他に多くの資源を準備しなければならない問題点がある。また、プログラマブルコントローラ側にもアプリケーション実行機能とは別にＣソースデバッガとのインタフェース用のソフトウェア資源・ハードウェア資源が必要になる。
【０００７】
本発明は、上記従来の問題点を鑑みてなされたものであって、ブレーク指定の実現に必要となるプログラミング支援装置・プログラマブルコントローラのソフトウェア資源・ハードウェア資源を低減させ、加えてデータアクセス（任意のアドレスにアクセスが発生したことをトリガーとする）に伴うブレーク機能も有するプログラマブルコントローラシステムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記の課題を解決する手段として、本発明は以下のように構成する。
第１に、シーケンス言語で記述された第１のプログラムをプログラマブルコントローラを構成するマイクロコンピュータが解釈実行できるマシン語で記述された第２のプログラムに変換する機能と、前記シーケンス言語の命令単位に対応して変換された前記マシン語群の各々の先頭に前記マシン語のＮＯＰ（ノーオペレーション）命令を挿入する機能と、前記第２のプログラムの先頭からの個々の前記ＮＯＰ命令までの相対位置を列挙した切れ目テーブルを生成する機能と、前記第２のプログラムのブレーク（実行停止）位置を前記シーケンス言語の命令単位で指定できるデバッグサポート機能を含み、前記ＮＯＰ命令を挿入後の前記第２のプログラムと前記切れ目テーブルとブレーク位置を特定する情報とを、ターゲットである前記プログラマブルコントローラに送信するプログラミング支援装置と、前記プログラミング支援装置から受信したデータより前記ブレーク位置を決定し、該ブレーク位置に従って前記ＮＯＰ命令をデバッグ処理への分岐命令に置き替えて前記ブレークを実現する機能とを有するように構成する。
【０００９】
第２に、前記プログラミング支援装置は、前記シーケンス言語の命令単位に対応して変換された前記マシン語群ごとの実行順番とアドレス情報とを関連付ける命令−アドレス対応表を生成する機能を有し、前記デバッグサポート機能は、前記命令−アドレス対応表より任意のアドレスにアクセスしたときにブレーク対象を特定する前記実行順番を全て抽出する機能を有するように構成する。
【００１０】
第３に、汎用のマイクロコンピュータを使用するプログラマブルコントローラのデバッグ方法であって、シーケンス言語で記述された第１プログラムを前記マイクロコンピュータのマシン語で記述された第２のプログラムに変換するときに、前記第２のプログラムにおける前記第１のプログラムの命令単位の切れ目に、前記マシン語のＮＯＰ（ノンオペレーション）命令を挿入するステップと、前記変換時に、前記マシン語の各命令の実行順番と該命令がアクセスするアドレスの情報とを、命令−アドレス対応表として生成するステップと、デバッグ時に、任意のアドレスにアクセスしたときのブレーク（実行停止）対象となるブレーク位置を特定する情報を、命令−アドレス対応表より全て抽出するステップと、前記命令−アドレス対応表と前記ブレーク位置を特定する情報とから、前記ＮＯＰ命令を挿入後の前記第２のプログラムにおけるブレーク位置を特定し、前記ＮＯＰ命令を挿入後の前記第２のプログラムのＮＯＰ命令をデバッグ処理へ分岐する分岐命令に置き替えるステップとを有する方法。
【発明の効果】
【００１１】
本発明により、プログラマブルコントローラ及びプログラミング支援装置のデバッグコードをユーザプログラム中に含める必要がないので、従来のように、デバッグ作業の都度、コンパイルとダウンロードとを行う必要がなくなる。特に細かく動作確認を行う場合に有効であり、プログラマブルコントローラシステムへの負荷量は低減し、作業量（時間効率）の面からも効果がある。
【００１２】
また、プログラミング支援装置では、コンパイルのときに命令単位でのアクセス先アドレスの情報を抽出するので、デバッグ時はこの一覧よりデータアクセスに伴うブレーク箇所を容易に抽出できる。一方、プログラマブルコントローラ側では、機械語の切れ目全てにおいて、対象のアドレスにアクセスしたか否かを確認する必要はなく、抽出結果に基づく機械語の切れ目でのみブレーク実行すれば良い。その結果、冗長な処理を回避し、プログラマブルコントローラの処理速度の向上に寄与するという効果を奏する。
【発明を実施するための最良の形態】
【００１３】
以下、本発明を実施するための最良の形態について、図面を参照しながら説明する。まず図1〜３、及び図４を用いて、動作の概略を説明する。その後、図４（ｂ）及び図５〜６を用いて任意の変数（アドレス）へのアクセスをブレーク対象とした場合の具体的な処理方法を説明する。
図１は、本発明におけるブロック構成を示したものであり、動作対象であるプログラマブルコントローラ２００と、これを支援するプログラミング支援装置１００から構成される。通常、プログラミング支援装置１００はローダ（開発環境）と呼ばれ、ユーザがプログラマブルコントローラ２００を操作するのに必要になる機械語オブジェクトの生成や修正を支援する。
【００１４】
ユーザは、プログラミング支援装置１００においてシーケンス言語を用いて制御プログラムを作成する。作成された制御プログラムは、ソースコードと呼ばれる。ソースコード２は、フロントエンドコンパイラ２０により中間コード４に変換され、ファイルとして保存される。続けて、中間コード４はバックエンドコンパイラ４０により変換され、機械語オブジェクト８、切れ目テーブル１０、命令−アドレス対応表１２が生成される。
【００１５】
ここで、機械語オブジェクト８は、ソースコード２を実行可能なバイナリコードに変換したものであり、中間コード４は両者の中間形態に相当する。変換過程において、ソースコード２を機械語オブジェクト８に直接変換するのではなく、抽象度が高い中間的なコードに変換することにより、中間コード４の段階では機種依存等によるアーキテクチャの制限を回避できるので、その結果、その後のコード最適化作業が進め易い利点がある。
【００１６】
図２は、中間コードと機械語オブジェクトの一例を示したものであり、それぞれ中間コード４（図１参照）、機械語オブジェクト８（図１参照）に対応する。
中間コード４の一例である中間コード３００は、演算子３０２とオペランド３０４を一組としたニーモニック言語で構成され、これが羅列されている。演算子３０２は演算の処理命令であり、オペランド３０４はアドレスや数値等の情報である。ここでは、中間コード３００の1行がソースコード２のシーケンス１命令に相当する。
【００１７】
機械語オブジェクト８の一例である機械語オブジェクト４００は、処理部４０２とデータ部４０４を一組（以下、ブロックと呼ぶ）としたもので構成され、これが羅列されている。
中間コード３００の1行は、機械語オブジェクト４００の１ブロックに相当し、演算子３０２と処理部４０２、オペランド３０４とデータ部４０４がそれぞれ対応する。通常、一つの演算子は複数の処理命令から構成されるので、演算子３０２と処理部４０２の対応関係は１対１でも、内部の命令数では１対多になる場合が多い。なお、ここでの中間コード３００の一例は、ソースコード２を字句解析し、予約語などを数値に変換しただけの状態として示したが、更に変換を進めバイトコードのようなものであっても構わない。
【００１８】
図３は、切れ目テーブルが生成される過程を示したものである。先に説明したように、中間コード５００の１行は機械語オブジェクト６００の１ブロックに変換される。ここで、機械語オブジェクト６００の各ブロックの前にＮＯＰ６０２を挿入する。ＮＯＰ（ノーオペレーション：No Operation）とは、命令の一つで「何も処理しない」処理を表す。
このようなＮＯＰ６０２とブロックとの羅列である機械語オブジェクト６００において、その先頭位置を０とし、ここからのオフセット量をオフセット６０４とする。各ＮＯＰ６０２ごとに、オフセット６０４を求める。ここでは、１番目のＮＯＰ６０２がX1、２番目のＮＯＰ６０２がX2、…、最後のＮＯＰ６０２がXNのオフセット量を有している。このＮＯＰ６０２とオフセット６０４の関係を一覧にしたものが、切れ目テーブル７００である。
【００１９】
中間コード５００の何番目の命令かが分かれば、切れ目テーブル７００を用いる事により、機械語オブジェクト６００におけるオフセット量が求められるので、結果、機械語オブジェクト６００における対応する命令の場所を特定できる。
図４は、命令−アドレス対応表とデータアクセスデバッグ情報の一例を示したものである。命令−アドレス対応表１２（図４（ａ）参照）は、命令番号、種別、データ型、開始アドレス、終了アドレス、アクセス方法の各情報から構成される。ここでは、一例として図２（ａ）の中間コード３００の３つの命令について示している。
【００２０】
なお、データ型は本願発明においては必須情報では無いが、発明を拡張する際に有効な情報なので具備することが望ましい。
以下に、命令−アドレス対応表１２の各項目について説明する。
命令番号は、中間コード３００における命令の出現順番の番号である。
種別は、オペランド３０４のアドレス表現の形式であり、直接・範囲・ポインタの３種類がある。直接とは、オペランドにアドレスが直接記述されている場合である。範囲とは、配列など、あるアドレスからのインデックスでデータにアクセスする場合である。ポインタとは、オペランドに指定したアドレスの中に実際にアクセスするアドレス情報が格納されている場合である。
【００２１】
データ型は、設定されている変数の型である。例えば、ＷＩ（16ビット列）は型の一つであり、16ビットの情報量を有する。
開始アドレス・終了アドレスは、アドレス番地の情報であるが、上記の種別によって登録方法が異なる。種別が直接の場合、一つのアドレスが指定されるので、開始アドレスか終了アドレスのいずれかに登録する。種別が範囲の場合、開始アドレス・終了アドレスの双方を登録する。種別がポインタの場合、オペランド３０４の指定している情報だけではアクセスするアドレスを特定できないので何も登録しない。
【００２２】
アクセス方法は、アドレスへのアクセス方法に関する情報であり、読み取り・書き込みの２種類がある。これらは、演算子３０２の種類から一意に決まる。例えば、演算子がＬＤやＡＤＤの場合は読み取りで、ＳＴの場合は書き込みになる。
なお、中間コード３００の例では単項のオペランド３０４しかないが、オペランド３０４が２項以上の場合は命令番号は同一とした上で、オペランド３０４の項数と同数分の行を登録する。
【００２３】
これらの手続きにより、命令−アドレス対応表１２が生成される。生成された命令−アドレス対応表１２を用いて、データアクセスデバッグ情報６を生成し、ユーザが指定するソースコードの任意の変数（アドレス）におけるブレークを支援する機能が、デバッグサポート機能３０である。図４（ｂ）は、データアクセスデバッグ情報６の一例であり、命令番号、種別、データ型、アドレス、アクセス方法の各情報から構成される。
【００２４】
プログラミング支援装置１００は、通信手段５０によって、機械語オブジェクト８、切れ目テーブル１０、データアクセスデバッグ情報６を、操作対象であるプログラマブルコントローラ２００に送信する。
プログラマブルコントローラ２００は、機械語オブジェクト８、切れ目テーブル１０、データアクセスデバッグ情報６を受信し、その後、実行停止実現機能６０により、データアクセスデバッグ情報６を解析し、切れ目テーブル１０からオフセット量を求め、ブレーク対象である機械語オブジェクト８の該当箇所のＮＯＰを分岐命令に置き替える。この置換後のファイルが、機械語オブジェクト（分岐命令）１４である。プログラマブルコントローラ２００は、機械語オブジェクト（分岐命令）１４を実行すると、分岐命令によりデータアクセス検査処理に移行し、ブレーク条件を満たす場合にブレーク状態となる。データアクセス検査処理とは、任意のアドレスにアクセスが発生したか否かをチェックする処理である。本発明においては、一例として、変数（アドレス）へのアクセスとそのアクセス方法をブレーク条件としているが、この他の条件を設定しても構わない。変数（アドレス）へのアクセスとそのアクセス方法だけをブレーク条件とする場合、データアクセスデバッグ情報６で対象の命令を抽出するので、データアクセス検査処理では無条件でブレークさせても構わない。
【００２５】
以上が本発明の基本動作になるが、データアクセスデバッグ情報６の生成方法と展開方法について、より具体的に説明する。図５は、ユーザがプログラミング支援装置１００のデバッグサポート機能３０によって、データアクセスデバッグ情報６を生成し、通信手段５０によって動作対象のプログラマブルコントローラ２００に送信するまでのフローチャートを示している。また、図６は、プログラマブルコントローラ２００の実行停止実現手段６０が、受信したデータアクセスデバッグ情報６を展開するフローチャートを示している。
【００２６】
以下に、プログラミング支援装置１００における処理を説明する。
ユーザはブレーク条件を指定する。デバッグサポート機能３０はユーザインターフェース機能を有し、変数（アドレス）と条件（データへのアクセス方法）との指定をユーザから受ける（ステップＳ８０２）。例えば、変数Ａの情報に読み取りでアクセスがあった場合、とユーザに指定されると、デバッグサポート機能３０では、変数Ａをアドレスに置き換え、条件である読み取りをアクセス方法として特定することになる。ここでは、データアクセスを想定したブレーク条件の設定方法の簡易な例として、アドレスとアクセス方法とを対象としたが、他に条件を設定しても構わないし、より簡易にアドレスだけとしても構わない。
【００２７】
その後、バックエンドコンパイラ４０により生成されている命令−アドレス対応表１２を１行分だけ読み込む（ステップＳ８０４）。読み込んだデータでは、種別によりアドレスの指定方法が異なるので、アドレスがユーザの指定のものか否かを判断していく。
・種別が直接（ステップＳ８０６）で、開始アドレスがユーザ指定アドレスである（ステップＳ８０８）場合
・種別が範囲で（ステップＳ８０６、ステップＳ８１２）で、ユーザ指定アドレスが読み込んだアドレスの
範囲にある（ステップＳ８１４）場合
・種別が直接でも範囲でも無い（ステップＳ８０６、ステップＳ８１２）場合
以上の３通りの場合において、さらに、アクセス方法がユーザ指定のアクセス方法と一致した場合（ステップＳ８１０）はブレーク対象であり、データアクセスデバッグ情報６として命令番号、種別、データ型、アドレス、アクセス方法の各情報を登録（ステップＳ８１６）する。
【００２８】
これ以外の場合である、開始アドレスがユーザ指定アドレスでない（ステップＳ８０８）場合、ユーザ指定アドレスが読み込んだアドレスの範囲にない（ステップＳ８１４）場合、アクセス方法がユーザ指定のアクセス方法と一致しない（ステップＳ８１０）場合は、データアクセスデバッグ情報６を登録せずにステップＳ８１８に分岐する。
その後、命令−アドレス対応表１２に次行があればステップＳ８０４に戻り、処理を繰り返す（ステップＳ８１８）。命令−アドレス対応表１２の全ての行を処理終了した場合、生成したデータアクセスデバッグ情報６を通信手段５０により対象に送信して処理を終了する（ステップＳ８２０）。ここで、通信手段５０では、ネットワークや無線ＬＡＮ等の通信網を経由しても良いし、磁気媒体やフラッシュメモリ等を介して遣り取りをしても構わない。
【００２９】
以下に、プログラマブルコントローラ２００における処理を説明する。
プログラマブルコントローラ２００は、機械語オブジェクト８、切れ目テーブル１０、データアクセスデバッグ情報６を受信する（ステップＳ９０２）。これらの情報を、同時に受信しても構わないが、機械語オブジェクト８、切れ目テーブル１０はバックエンドコンパイラ４０がコンパイル時に生成されるので、ユーザが指定してから生成されるデータアクセスデバッグ情報６よりも先に受信しても構わない。
【００３０】
次に実行停止実現機能６０はデータアクセスデバッグ情報６から１行分だけ読み込む（ステップＳ９０４）。データアクセスデバッグ情報６の命令番号から、切れ目テーブル１０で該当するオフセット（図３参照）を取得する（ステップＳ９０６）。
その後、データアクセスデバッグ情報６の種別とアクセス方法からデータアクセス検査処理を決定する（ステップＳ９０８）。この処理は、先に記載したステップＳ８０２と対応し、ここではブレーク条件として、アドレスとアクセス方法とを対象としているので、この条件をデータアクセス検査処理とする。
【００３１】
その後、機械語オブジェクト８において、取得したオフセットの位置のＮＯＰ命令をデータアクセス検査処理への分岐命令に置き替える（ステップＳ９１０）。
その後、データアクセスデバッグ情報６に次行があればステップＳ９０４に戻り、処理を繰り返し、全ての行を処理終了した場合は処理を終了する（ステップＳ９１２）。
これらの一連の動作により、機械語オブジェクト（分岐命令）１４が生成される。
【００３２】
以上の本発明の説明から明らかなように、プログラマブルコントローラ及びプログラミング支援装置のデバッグコードをユーザプログラム中に含める必要がないので、デバッグ作業の都度、コンパイルとダウンロードとを行う必要がない。
また、プログラミング支援装置では、コンパイルのときにシーケンス命令単位でのアクセス先アドレスの情報を抽出するので、デバッグ時はこの一覧よりデータアクセスに伴うブレーク箇所を容易に抽出できる。一方、プログラマブルコントローラ側では、機械語の切れ目全てにおいて、対象のアドレスにアクセスしたかを確認する必要はなく、抽出結果に基づく機械語の切れ目でブレーク実行しても良い。よって、冗長な処理を回避し、プログラマブルコントローラの処理速度の向上に寄与する。
【００３３】
もしデータアクセスデバッグ情報６を用いないでシステムの実現を試行すると、図７に示すようにＮＯＰ命令ごとに、目的のアドレスにアクセスしたかのデータアクセス検査処理が必要になり、処理が冗長になるのは避けられない。
【図面の簡単な説明】
【００３４】
【図１】本発明におけるブロック構成を示す説明図
【図２】中間コード、機械語オブジェクトの一例を示す説明図
【図３】中間コード、機械語オブジェクト、切れ目テーブルの作用の一例を示す説明図
【図４】命令−アドレス対応表、データアクセスデバッグ情報の一例を示す説明図
【図５】データアクセスデバッグ情報の生成・転送フローチャートの説明図
【図６】データアクセスデバッグ情報の受信・展開フローチャートの説明図
【図７】データアクセスデバッグ情報を用いないデバッグ概略の説明図
【符号の説明】
【００３５】
２  ソースコード
４  中間コード
６  データアクセスデバッグ情報
８  機械語オブジェクト
１０  切れ目テーブル
１２  命令−アドレス対応表
１４  機械語オブジェクト（分岐命令）
２０  フロントエンドコンパイラ
３０  デバッグサポート機能
４０  バックエンドコンパイラ
５０  通信手段
６０  実行停止実現機能
１００  プログラミング支援装置
２００  プログラマブルコントローラ
３００、５００  中間コード（一例）
３０２  演算子
３０４  オペランド
４００、６００  機械語オブジェクト（一例）
４０２  処理部
４０４  データ部
６０２  ＮＯＰ（ノーオペレーション）
６０４  オフセット
７００  切れ目テーブル
８００  データアクセス検査処理
Ｓ８０２〜Ｓ９１２  データアクセスデバッグ情報の処理方法に関するステップ
【図１】
2008204023.tif 000003
【図２】
2008204023.tif 000004
【図３】
2008204023.tif 000005
【図４】
2008204023.tif 000006
【図５】
2008204023.tif 000007
【図６】
2008204023.tif 000008
【図７】
2008204023.tif 000009