JP3039450B2 - スタック領域の切替方法、方式およびスタック領域切替プログラムを記録した記憶媒体 - Google Patents

スタック領域の切替方法、方式およびスタック領域切替プログラムを記録した記憶媒体

Info

Publication number
JP3039450B2
JP3039450B2 JP9151236A JP15123697A JP3039450B2 JP 3039450 B2 JP3039450 B2 JP 3039450B2 JP 9151236 A JP9151236 A JP 9151236A JP 15123697 A JP15123697 A JP 15123697A JP 3039450 B2 JP3039450 B2 JP 3039450B2
Authority
JP
Japan
Prior art keywords
stack area
processing
interrupt handler
task
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP9151236A
Other languages
English (en)
Other versions
JPH10340194A (ja
Inventor
規彰 高倉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP9151236A priority Critical patent/JP3039450B2/ja
Publication of JPH10340194A publication Critical patent/JPH10340194A/ja
Application granted granted Critical
Publication of JP3039450B2 publication Critical patent/JP3039450B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、割り込み処理が高
級言語で記述された場合に、リアルタイムOS上で動作
するアプリケーションの割り込み処理における、タスク
領域のタスク処理用スタック領域から割り込みハンドラ
処理用スタック領域への切替方式に関する。
【0002】
【従来の技術】従来技術の説明に先立ち、リアルタイム
OS上で動作するタスクの処理を行うために、タスクの
処理を行うためのスタック領域と、ハンドラの処理を行
うためのスタック領域が必要で、タスク処理用スタック
領域からハンドラへのスタック領域の切り替え処理と、
ハンドラ処理用スタック領域からタスク処理用スタック
領域への切り替えが必要な背景を説明する。
【0003】リアルタイムOS上で動作するアプリケー
ションは複数のタスクと複数のハンドラから構成されて
いる。タスクとは、逐次的に動作するプログラムの単位
で、リアルタイムOS上のアプリケーションプログラム
の中では、一つのまとまった仕事がタスクとして定義さ
れる。ハンドラは、上記タスクとは独立した存在であ
り、その動作は上記タスクの動作とは同期しておらず、
非同期的に発生するシステム内外部の様々な事象に対処
するよう記述されたプログラムである。それぞれのタス
クとハンドラはある特定の処理を行うよう記述されてお
り、その処理を行う際には、スタック領域を使用しなが
ら処理を行う。リアルタイムOS上では、通常タスクが
動作しており、割り込みなどの要因によりハンドラが起
動される。上記の割り込みの発生により起動されるハン
ドラを割り込みハンドラという。割り込みの発生により
割り込みハンドラの処理が行われることになるが、割り
込みハンドラ処理用のスタック領域を設けない場合、割
り込みハンドラは割り込みなどの要因の発生したときに
動作していたタスクのスタック領域をそのまま引き継い
で処理を行うこととなる。
【0004】図8を用いて具体的に説明する。今、リア
ルタイムOS上に3つのタスクTASK A、TASK
B、TASK Cが存在し、1つの割り込みハンドラ
Hnd Aが存在したとすると、これらタスクの使用す
るスタック領域は、図8に示したようになる。図8では
タスクコンテキストは5バイト分の領域が、レジスタ退
避に2バイド分の領域が必要なものとして記述してい
る。この図8では、タスクTASK Aの処理中に13
バイトのスタック領域710、タスクTASK Bの処理
中に3バイトのスタック領域730、タスクTASK
Cの処理中に8バイトのスタック領域750を使用し、
ハンドラHnd Aの処理中に10バイトのスタック領
域702,704,706を使用するものとしている。
このとき、タスクTASK Aの総スタック使用量はT
ASK Aのスタック領域710の13バイトとタスク
コンテキスト712の5バイト、レジスタ退避分711
の2バイト、ハンドラHnd Aのスタック領域702
の10バイドの計30バイト、タスクTASK Bの総
スタック使用量はタスクTASK Bのスタック領域7
30の3バイトとタスクコンテキスト732の5バイト
とレジスタ退避分731の2バイト、ハンドラHnd
Aのスタック領域704の10バイトの計20バイト、
タスクTASK Cの総スタック使用量はタスクTAS
Cのスタック領域750の8バイトとタスクコンテ
キスト752の5バイト、レジスタ退避分751の2バ
イト、ハンドラHnd Aのスタック領域706の10
バイトの計25バイトとなる。
【0005】この例において、タスクコンテキスト71
2,732,752はタスクTASK A,TASK
B,TASK Cが何らかの原因によりその実行を中断
されたときに、その後に処理を再開するために必要な情
報であり、これは個々のタスクによってその内容が異な
り、この情報はマルチタスク環境では割り込み処理とは
関係なく必要である。また、レジスタ退避分711,7
31,751は、タスクの処理中に割り込み処理が入っ
てくることにより退避されるレジスタ(割り込み処理発
生時点において処理を行っていた命令のアドレス情報を
保持しているレジスタなど)のための領域である。これ
らの値は、CPUのレジスタ本数やOSによって必要サ
イズは異なる。
【0006】全てのタスクTASK A,TASK
B,TASK Cの総スタック使用量にハンドラHnd
Aのスタック使用量(10バイト)が含まれているの
は、どのタスクを実行しているときに、割り込みなどの
要因の発生によりハンドラHnd Aが起動されるかわ
からないためで、どのタスクを実行しているときでも対
処可能なように、全てのタスクTASK A,TASK
B,TASK Cの総スタック使用量にハンドラHn
Aのスタック使用量を加えなければならない。これ
により、このアプリケーションにおいて確保すべきスタ
ック領域の大きさは全てのタスクTASK A,TAS
B,TASK Cの総スタック使用量を加えた75
バイトとなる。
【0007】この図8を見てもわかるように、ハンドラ
がシステムに1つしか存在していないにもかかわらず、
そのスタック領域は複数箇所にあり、その大きさは、実
際に1つのハンドラで必要なサイズのタスク数倍となっ
ている。しかも、ハンドラHnd Aが動作していると
きに使われるスタック領域は、上記3つの領域のうちい
ずれか1つであり、残りの2つの領域は使用されていな
いのである。これは、メモリ領域の無駄である。
【0008】この問題点を解決するために、タスクで使
用するスタック領域と、ハンドラで使用するスタック領
域の分割とそれに伴うスタック領域の切り替え方法が考
えられた。
【0009】以下、従来とられていた方法に関して図面
を用いて説明する。
【0010】従来、高級言語を用いてリアルタイムOS
上で動作するプログラムを作成する場合に、タスクで使
用するスタック領域から、ハンドラで使用するスタック
領域に切り替えるための、システムコールをリアルタイ
ムOS側で用意し、そのシステムコールを用いてスタッ
ク領域の切り替え処理を行っていた。
【0011】図9に構成図を、図12に割り込みハンド
ラのフローチャートを、図13に割り込みハンドラの記
述例を、図14にタスク処理用スタック領域と割り込み
ハンドラ用スタック領域の詳細図を、図15に従来の手
法を用いた結果のタスク処理用スタック領域と割り込み
ハンドラ用スタック領域の図を示す。
【0012】図9において、言語処理装置802への入
力となるファイルをソース・プログラム・ファイル80
1といい、言語処理装置802が翻訳した結果、生成/
出力されたファイルをオブジェクト・モジュール・ファ
イル807という。
【0013】まず、言語処理装置802はソース・プロ
グラム・ファイル801を入力し、構文解析部803に
おいてそのファイルの内容を解析する。解析の過程にお
いて、割り込みハンドラである関数を指定するキーワー
ドを認識したら、キーワード認識部806において指定
された関数を記憶する。構文解析処理が完了すると、コ
ード生成部804に制御を移し、解析された結果に基づ
いて命令を選択してコードを生成していく。コード生成
処理が完了すると、オブジェクト出力部805に制御を
移し、生成したコードをオブジェクト・モジュール・フ
ァイル806に出力する。このオブジェクト出力部80
5において、先にキーワード認識部806において記憶
された関数か否かを調べ、記憶された関数である場合に
は、割り込みハンドラであると認識し、通常の関数とは
異なる前処理と呼ばれるプログラムコードを関数本体処
理に先立って処理されるよう出力し、さらに、関数本体
のプログラムコードの実行が完了したときに、通常関数
とは異なる後処理と呼ばれるプログラムコードが実行さ
れるようオブジェクト・モジュール・ファイル807に
出力する。
【0014】次に図10,11を用いて従来の言語処理
装置802のアルゴリズムを詳細に説明する。
【0015】まず、ステップ800において、ソース・
プログラムを入力する。以降、構文解析部803におい
てソース・プログラム・ファイル801の最後でない限
り(ステップ921)、構文解析を行う(ステップ92
2)。
【0016】構文解析時に、割り込みハンドラ識別キー
ワードを認識した場合には、割り込みハンドラ識別キー
ワードによって指定された関数名を記憶しておく(ステ
ップ931,932)。そして、再度ソース・プログラ
ム・ファイル801の最後か調べるステップ921に戻
り、一連の処理をソース・プログラム・ファイル801
の最後まで繰り返す。
【0017】ソース・プログラム・ファイル801の最
後まで解析が完了したら、次にコード生成部804に処
理を移し、コードの生成を行う。コード生成部804で
は、構文解析結果を構文解析部803より受け取り、コ
ード生成が完了しない限り(ステップ941)、関数呼
び出しかどうかを調べ(ステップ942)、関数び呼出
しでないならば通常コードを生成する(ステップ94
3)。関数呼び出しであったならば、通常のコール命令
を使用して、関数コール命令を出力する(ステップ94
4)。そして、再度構文解析結果を得てコード生成が完
了したかを調べるステップ(ステップ941)に戻り、
一連の処理をコード生成が完了するまで繰り返す。
【0018】コード生成が完了したら、次にオブジェク
ト出力部805に移り、オブジェクト出力を行う。オブ
ジェクト出力部805は、オブジェクト出力(ステップ
962)が完了しない限り(ステップ951)、出力す
る関数が割り込みハンドラであるか否かを調べ(ステッ
プ952)、割り込みハンドラでなかったならば、自動
通常関数として変数領域の確保などを行う関数前処理を
出力して(ステップ953)、関数内のプログラムコー
ドを出力し(ステップ954)、関数前処理で確保した
自動変数領域の開放などを行う関数後処理を出力する
(ステップ955)。割り込みハンドラであったなら
ば、通常関数とは異なるレジスタの退避や自動変数領域
の確保などを行う割り込みハンドラ前処理を出力し(ス
テップ956,957)、関数内のプログラムコードを
出力し(ステップ958)、関数内のプログラムコード
を出力し終えたならば割り込みハンドラの前処理で退避
したレジスタを復帰する処理(ステップ960)や自動
変数領域の開放処理を行う割り込みハンドラ後処理を出
力する(ステップ959)。関数の後処理や割り込みハ
ンドラの後処理を出力し終えたら、オブジェクト出力が
完了したかを調べるステップ(ステップ951)に戻
り、一連の処理をオブジェクト出力が完了するまで繰り
返す。
【0019】オブジェクト出力が完了したならば、その
結果をオブジェクト・モジュール・ファイル807に出
力し(ステップ962)、言語処理装置802の動作を
完了する。
【0020】従来は上記フローチャートで示される処理
を行う言語処理装置を用いて、タスク処理用スタック領
域から割り込みハンドラ処理用スタック領域への切り替
えを行っていた。
【0021】次に、図12と図13を用いて、言語処理
装置802を用いてどのようにしてタスク処理用スタッ
ク領域から割り込みハンドラ処理用スタック領域への切
り替えを行っていたかを説明する。
【0022】まず、割り込みハンドラではレジスタの退
避を行い(ステップ1001)、割り込まれたプログラ
ムが再開可能なようにしておく。次に、割り込みハンド
ラ内で使用する自動変数領域を確保する(ステップ10
02)。そして、OSが提供している割り込みハンドラ
用スタック領域へ切り替えるためのシステムコールを呼
び出す(ステップ1003)。システムコールを発行す
る際に、割り込みハンドラ用スタック領域のアドレスを
引数としてOSに渡す。このシステムコールの実行によ
って、タスク処理用スタック領域から引数として渡され
た割り込みハンドラ処理用スタック領域への切り替えを
行う。
【0023】タスク処理用スタック領域から割り込みハ
ンドラ処理用スタック領域への切り替え処理では、ま
ず、スタック領域へ確保した自動変数領域とタスク処理
用スタック領域から割り込みハンドラスタック領域へ切
り替えるシステムコールを発行したことによって使用し
たスタック領域の内容を割り込みハンドラ処理用スタッ
ク領域へコピーする(ステップ1011)。そして、ス
タック領域を割り込みハンドラ領域として指定された領
域へと移す(ステップ1012)。システムコールの処
理は完了し、割り込みハンドラの処理を続行する。処理
はステップ1004へと戻り、割り込みハンドラの処理
を行う。そして、割り込みハンドラの処理が完了する
と、OSが提供しているタスク処理用スタック領域へ切
り替えるためのシステムコールを呼び出す(ステップ1
005)。
【0024】割り込みハンドラ処理用スタック領域から
タスク処理用スタック領域への切り替え処理では、ま
ず、割り込みハンドラ処理用スタック領域へコピーして
きた自動変数領域とタスク処理用スタック領域へ切り替
えるためのシステムコールを発行したことによって使用
するスタック領域の内容をタスク処理用スタック領域に
コピーする(ステップ1021)。そして、スタック領
域を割り込みハンドラ処理用スタック領域からタスク処
理用スタック領域へと切り替える(ステップ102
2)。システムコールの処理が完了すると、割り込みハ
ンドラの処理を続行する(ステップ1004)。割り込
みハンドラからの復帰用システムコールを発行する(ス
テップ1006)。ステップ1002で確保した自動変
数領域を開放する(ステップ1007)。そして、ステ
ップ1001で退避した割り込まれたプログラムのレジ
スタを復帰し(ステップ1008)、割り込みハンドラ
の処理からの復帰命令を実行する(ステップ100
9)。OSを使用している場合には、先の割り込まれた
プログラムのレジスタの復帰処理と割り込みハンドラの
処理からの復帰命令を行うシステムコールがOSによっ
て用意されており、ステップ1006のようにそのシス
テムコールを発行するとOSによって処理される。よっ
て、ステップ1007および1008は実際に実行され
ることはない。
【0025】従来はこのようにして、タスク処理用スタ
ック領域から割り込みハンドラ処理用スタック領域への
切り替え処理、割り込みハンドラ処理用スタック領域か
らタスク処理用スタック領域への切り替え処理を行って
いた。
【0026】図13に上記割り込みハンドラの記述例を
示す。
【0027】1110はユーザが記述する割り込みハン
ドラのソースコードである。1120は前記割り込みハ
ンドラのソースを言語処理装置802によって処理を行
った結果をソースコードと対応させて表記したもので、
1130と1140はOSが提供したシステムコール
で、1130はタスク処理用スタック領域から割り込み
ハンドラ処理用スタック領域へ切り替えるシステムコー
ルで、タスク処理用スタック領域から割り込みハンドラ
処理用スタック領域へデータをコピーし、割り込みハン
ドラ処理用スタック領域へスタックポインタを移動す
る。1140は割り込みハンドラ処理用スタック領域か
らタスク処理用スタック領域へ切り替えるシステムコー
ルで、ハンドラ処理用スタック領域からタスク処理用ス
タック領域へスタックポインタを移動する。
【0028】1111は言語処理装置が割り込みハンド
ラとして記述された関数を割り込みハンドラであると認
識するためのキーワードで、“#pragma interrupt ”と
いうキーワードの後にかかれた関数名が割り込みハンド
ラであると認識する。1112は自動変数の定義であ
る。1113はOSのシステムコールでタスク処理用ス
タック領域から割り込みハンドラ処理用スタック領域へ
切り替える処理を呼び出している。この呼び出しの際に
引数として割り込みハンドラ処理用スタック領域のアド
レスを渡している。1114もOSシステムコールで、
割り込みハンドラ処理用スタック領域からタスク処理用
スタック領域へ切り替える処理を呼び出している。11
13と1114のシステムコール呼び出しの間に割り込
みハンドラの処理をユーザは記述することになり、その
処理は割り込みハンドラ処理用スタック領域を用いて処
理されることになる。1115は割り込みハンドラ処理
からの復帰処理を行うOSの提供するシステムコールで
ある。
【0029】1121は1111を認識して言語処理装
置が出力した割り込みハンドラの前処理で、1122は
1112によって割り込みハンドラで定義された自動変
数領域を確保している処理である。1123はタスク処
理用スタック領域から割り込みハンドラ処理用スタック
領域へ切り替えるシステムコールを呼び出す処理で、1
124は割り込みハンドラ処理用スタック領域からタス
ク処理用スタック領域へ切り替えるシステムコールを呼
び出す処理で、1125は割り込みハンドラ処理からの
復帰を行うシステムコールを呼び出す処理である。11
26は割り込みハンドラで定義され確保された自動変数
領域を解放している処理である。1127は1111を
認識して言語処理装置が出力した割り込みハンドラの後
処理である。
【0030】図14はタスク処理用スタック領域からタ
スク処理用スタック領域へ切り替えるシステムコール
と、割り込みハンドラ処理用スタック領域からタスク処
理用スタック領域へ切り替えるシステムコールを発行し
たときのスタックの様子を示した図である。
【0031】領域1201は上記システムコールを発行
に伴い使用する領域で、システムコールを呼び出したア
ドレスに戻るために、システムコールを呼び出したアド
レスを記憶するために使用する領域である。この領域は
割り込みハンドラ処理用スタック領域からタスク処理用
スタック領域へ切り替えるシステムコールが発行された
ときには、割り込みハンドラ処理用スタック領域からコ
ピーされる。領域1202は自動変数の内容を記憶する
ための領域である。この領域は言語処理装置の出力する
コードによって確保される。領域1203は割り込まれ
たプログラムが再開できるように割り込まれたプログラ
ムの使用していたレジスタの内容を退避している領域で
ある。領域1204は割り込みが発生したことにより割
り込みハンドラに処理が切り替わるが、割り込まれたプ
ログラムのどのアドレスから再開すればよいかを記憶し
ておく領域である。領域1205は割り込まれたプログ
ラムが自動変数の使用などに使用していた領域である。
領域1211は上記システムコールを発行するに伴い使
用する領域でシステムコールを呼び出したアドレスに戻
るために、システムコールを呼び出したアドレスを記憶
するために使用する領域である。領域1212は割り込
みハンドラで使用する自動変数の内容を記憶する領域
で、タスク処理用スタック領域を割り込みハンドラ処理
用スタック領域に切り替えるシステムコール1114に
よってその内容はタスク処理用スタック領域からコピー
される。
【0032】前記のように割り込みハンドラ内でスタッ
ク領域を切り替えるシステムコールを発行するように記
述し、前記言語処理装置を用いることによって、スタッ
ク領域をタスク処理用スタック領域と割り込みハンドラ
処理用スタック領域とに分割することが可能となった。
しかし、前記手法によるとスタック領域の内容をコピー
しなければその処理を続行することができない。これ
は、言語処理装置が自動変数などの記憶領域をスタック
上に確保するためで、言語処理装置が出力したプログラ
ムコードはスタック領域に確保した記憶領域を参照する
のにスタックポインタからの相対番地を用いている。こ
の言語処理装置が出力したプログラムコードを正常に動
作させるためには、スタックポインタからの相対番地に
プログラムコードが期待しているデータを保持しておか
なければならない。このためスタック領域を切り替える
以前にスタック領域に確保したデータをプログラムコー
ドが実行されているときのスタック領域にコピーする。
【0033】また、図15に示したように、タスク処理
用スタック領域に割り込みハンドラで使用する自動変数
の領域を考慮に入れなければならない。これは、システ
ム上で動作する全てのタスクに対して考慮せねばなら
ず、その全てのタスク処理用スタック領域にあらかじめ
加算しておかなければならない。
【0034】スタック領域を切り替えるために、前記の
システムコールを呼び出し方法をとった場合において
は、図8を用いて説明したときと同様に、リアルタイム
OS上に3つのタスクTASK A,TASK B,T
ASK Cが存在し、1つの割り込みハンドラHnd
Aが存在したとすると、タスクの使用するスタック領域
は、図15に示したようになる。この図15では、図8
と同様に、タスクコンテキストは5バイト分の領域が、
レジスタ退避に2バイト分の領域が必要なものとして記
述している。図8と同様にタスクTASK Aの処理中
に13バイトのスタック領域1310、タスクTASK
Bの処理中に3バイトのスタック領域1330、タス
クTASK Cの処理中に8バイトのスタック領域13
50領域を使用し、ハンドラHnd Aの処理中に10
バイト(ハンドラHnd Aの自動変数領域1302,
1304,1306に4バイト、ハンドラHnd AS
の処理中に6バイトのスタック領域1380)のスタッ
ク領域を使用するものとしている。このとき、タスクT
ASK Aの総スタック使用量はタスクTASK Aの
13バイトのスタック領域1310とタスクコンテキト
1312の5バイト、レジスタ退避分1311の2バイ
ト、ハンドラHnd Aの自動変数領域分1302の4
バイトの計24バイト、タスクTASK Bの総スタッ
ク使用量はTASK Bのスタック領域1330の3バ
イトとタスクコンテキスト1332の5バイト、レジス
タ退避分1331の2バイト、ハンドラHnd Aの自
動変数領域1304分の4バイトの計14バイト、タス
クTASK Cの総スタック使用量はタスクTASK
Cの総スタック使用量はタスクTASK Cのスタック
領域1350の8バイトとタスクコンテキスト1352
の5バイト、レジスタ退避1351分の2バイト、ハン
ドラHnd Aの自動変数領域1306分の4バイトの
計19バイト、ハンドラHnd Aの総スタック使用量
はハンドラHnd Aのスタック領域1380の6バイト
と、ハンドラHnd Aの自動変数領域1370分の4
バイトの計10バイトとなる。このアプリケーションに
おいて確保すべきスタック領域の大きさは全ての総スタ
ック使用量を加えた67バイトとなる。
【0035】
【発明が解決しようとする課題】上述した従来の方法で
は、ハンドラ内でシステムコールを発行することによっ
て、タスク処理用スタック領域に割り込みハンドラで使
用するスタック分を一旦確保し、その確保した内容を割
り込み処理用スタック領域にコピーしてから割り込みハ
ンドラの処理を行っていた。しかしながら、この方法で
は、一旦タスク処理用スタック領域に割り込みハンドラ
で使用するスタックを確保して行うためその分の領域を
タスク処理用スタック領域に確保しておかねばならな
い。このため、割り込みハンドラ処理用スタック領域を
設けてもそのメリットを十分生かせず、また、スタック
領域の内容をタスク処理用スタック領域から割り込みハ
ンドラ処理用スイタック領域へ、割り込みハンドラ処理
用スタック領域からタスク処理用スタック領域へコピー
しなければならず、時間を要してしまうという欠点があ
る。
【0036】本発明の目的は、スタック切り替えに要す
る時間の短縮と、スタック領域として用意する領域の削
減を行うスタック領域の切替方法、方式およびスタック
領域切替プログラムを記録した記憶媒体を提供すること
にある。
【0037】
【課題を解決するための手段】本発明のスタック領域の
切替方法は、ソース・プログラム・ファイルの解析過程
において、割り込みハンドラであり、かつスタック領域
を切り替える関数を指定するキーワードを認識すると、
指定された関数を記憶するともに、割り込みハンドラ処
理用スタック領域のアドレスを取得する段階と、前記ソ
ース・プログラム・ファイルの解析された結果に基づい
て生成されたコードの出力中に、前記の指定された関数
を検出すると、割り込みが発生した時点のレジスタ群を
退避するコードを出力した後、前記アドレスにスタック
領域を切り替えるコードを出力し、割り込みハンドラの
コードを出力する段階と、割り込みハンドラから復帰す
るOSのシステムコールが呼び出されたら、割り込みハ
ンドラ処理用スタック領域から割り込まれた時点のスタ
ック領域に戻すコードを出力し、割り込みハンドラから
復帰するOSのシステムコールを呼び出すコードを出力
する段階を有する。
【0038】本発明のスタック領域切替方式は、割り込
みハンドラであり、かつスタック領域を割り込みハンド
ラ処理用スタック領域切り替え関数を指定するキーワー
ドを認識する手段と、前記キーワードを認識すると、前
記関数を記憶するとともに、前記割り込みハンドラ処理
用スタック領域を取得する手段と、前記ソース・プログ
ラム・ファイルの解析された結果に基づいて生成された
コードの出力中に、前記の指定された関数を検出する
と、割り込みが発生した時点のレジスタ群を退避するコ
ードを出力した後に、前記アドレスにスタック領域を切
り替えるコードを出力し、割り込みハンドラのコードを
出力する手段と、割り込みハンドラから復帰するOSの
システムコールが呼び出されたら、割り込みハンドラ処
理用スタック領域から割り込まれた時点のスタック領域
に戻すコードを出力し、割り込みハンドラから復帰する
OSのシステムコールを呼び出すコードを出力する手段
を有する。
【0039】本発明のスタック領域切替プログラムを記
録した記憶媒体は、ソース・プログラム・ファイルの解
析過程において、割り込みハンドラであり、かつスタッ
ク領域を切り替える関数を指定するキーワードを認識す
ると、指定された関数を記憶するともに、割り込みハン
ドら処理用スタック領域のアドレスを取得する手順と、
前記ソース・プログラム・ファイルの解析された結果に
基づいて生成されたコードの出力中に、前記の指定され
た関数を検出すると、割り込みが発生した時点のレジス
タ群を退避するコードを出力した後、前記アドレスにス
タック領域を切り替えるコードを出力し、割り込みハン
ドラのコードを出力する手順と、割り込みハンドラから
復帰するOSのシステムコールが呼び出されたら、割り
込みハンドラ処理用スタック領域から割り込まれた時点
のスタック領域に戻すコードを出力し、割り込みハンド
ラから復帰するOSのシステムコールを呼び出すコード
を出力する手順を有する。
【0040】ある特定キーワードが識別できるように
し、そのキーワードの記述によって、スタック領域切り
替えコードを割り込みハンドラで必要となる自動変数な
どのための領域確保以前に出力することにより、システ
ムで必要とするスタック領域の削減を行うことができ、
また、スタック領域のコピーを行う必要がないため、切
り替え処理が早くなる。
【0041】
【発明の実施の形態】次に、本発明の実施の形態につい
て図面を参照して説明する。
【0042】図1は本発明の一実施形態の言語処理装置
の構成図、図2、図3は言語処理装置102の処理のフ
ローチャート、図4は割り込みハンドラの処理フローチ
ャート、図5は割り込みハンドラの記述例、図6はタス
ク処理用スタック領域と割り込みハンドラ用スタック領
域の詳細図、図7は本発明を用いた結果のタスク処理用
スタック領域と割り込みハンドラ処理用スタック領域を
示す図である。
【0043】言語処理装置102は構文解析部103と
コード生成部104とオブジェクト出力部105とキー
ワード認識部106を含み、ソース・プログラム・ファ
イル10を入力し、翻訳し、オブジェクト・モジュー
ル・ファイル108を生成し、出力する。
【0044】まず、言語処理装置102はソース・プロ
グラム・ファイル101を入力し、構文解析部103に
おいてそのファイル内容を解析する。解析の過程におい
て、割り込みハンドラであり、かつスタック領域を切り
替える関数を指定するキーワードを認識したら、キーワ
ード認識部106において指定された関数を記憶する。
構文解析処理が完了すると、コード生成部104に制御
を移し、解析された結果に基づいて命令を選択してコー
ドを生成していく。コード生成処理が完了すると、オブ
ジェクト出力部105に制御を移し、生成したコードを
オブジェクト・モジュール・ファイル108に出力す
る。このオブジェクト出力部10において、さきにキ
ーワード認識部106において記憶された関数か否かを
調べ、記憶された関数である場合には、割り込みハンド
ラであると認識し、通常の関数とは異なる前処理と呼ば
れるコードを関数本体処理に先立って処理されるよう出
力し、さらに、関数本体のコードの処理が完了したとき
に、通常関数となる異なる後処理と呼ばれるコードが処
理されるようオブジェクト・モジュール・ファイル10
8に出力する。そして、スタック領域の切り替えの指示
を受けた関数である場合には、さらに、前処理の直後
に、スタック領域をタスク処理用スタック領域から割り
込みハンドラ処理用スタック領域へ切り替えるコードを
出力し、後処理の直前にスタック領域を割り込みハンド
ラ処理用スタック領域からタスク処理用スタック領域へ
切り替えるコードを出力する。
【0045】次に、図2を用いて言語処理装置10
アルゴリズムを詳細に説明する。
【0046】まず、ステップ100において、ソース・
プログラム・ファイル101を入力する。以降、構文解
析部103においてソース・プログラム・ファイル10
1の最後でない限り(ステップ221)、構文解析を行
う(ステップ222)。
【0047】構文解析時に、ステップ231において、
割り込みハンドラ識別キーワードを認識した場合には、
割り込みハンドラ識別キーワードによって指定された関
数名を記憶しておく(ステップ232)。次に、割り込
みハンドラ認識キーワードによって指定された関数にお
いてスタック切り替えを行うか否かを指定するキーワー
ドが記述されているかを解析する(ステップ233)。
スタック切り替え指示のキーワードを認識した場合に
は、その割り込みハンドラがスタック領域としてメモリ
領域中のどの領域を使用するかを得て、記憶しておく
(ステップ234)。再度ソースープログラム・ファイ
ル101の最後かを調べるステップ(ステップ221)
に戻り、一連の処理をソース・プログラム・ファイル1
01の最後まで繰り返す。ソース・プログラム・ファイ
ル101の最後まで解析が完了したら、次に、コード生
成部104に処理を移し、コードを生成する。コード生
成部104では、構文解析結果を構文解析部103より
受け取り、コード生成が完了しない限り(ステップ24
1)、関数呼び出しかどうかを調べ(ステップ24
2)、関数呼び出しでないないならばコード生成を行う
(ステップ243)。関数呼び出しであったならば、通
常のコード命令を使用して関数コール命令を出力する
(ステップ244)。そして、再度構文解析結果を得て
コード生成が完了したかを調べるステップ(ステップ2
41)に戻り、一連の処理をコード生成が完了するまで
繰り返す。
【0048】コード生成が完了したら、次にオブジェク
ト出力部105に移り、オブジェクト出力を行う、オブ
ジェクト出力部105ではデータ出力が完了しない限り
(ステップ251)、出力する関数が割り込みハンドラ
の指定を受けているか否かを調べ(ステップ252)、
割り込みハンドラの指定を受けていない場合には、自動
変数で使用する領域の確保を行う(ステップ253)。
そして、関数内のコードを出力し(ステップ254)、
関数内のコードを出力し終えたならば、先の処理で確保
した自動変数で使用した領域の開放処理(ステップ25
5)の出力を行う。領域の開放処理の出力を行ったら、
オブジェクト出力が完了したかを調べるステップ(ステ
ップ251)に戻る。
【0049】割り込みハンドラの指定を受けている場合
には、スタック領域の切り替え指定のあった割り込みハ
ンドラであるか否かを調べ(ステップ256)、スタッ
ク領域の切り替え指定のなかった割り込みハンドラであ
った場合には、レジスタ群の退避を行うコードを出力す
る(ステップ267)。そして、割り込みハンドラ内で
使用する自動変数の領域を確保を行う前処理を出力し
(ステップ268)、割り込みハンドラのコードを出力
し(ステップ269)、割り込みハンドラのコードを出
力し終えたなら、先の処理で確保した自動変数で使用し
た領域の開放を行う後処理を出力する(ステップ27
0)。後処理を出力し終えたなら、割り込みハンドラの
先頭で退避したレジスタ群を復帰するコードを出力し
(ステップ271)、割り込みハンドラから復帰する命
令を出力する(ステップ272)。そして、オブジェク
ト出力が完了したかを調べるステップ(ステップ25
1)に戻る。
【0050】スタック領域の切り替え指定のあった割り
込みハンドラであった場合には、まずレジスタ群の退避
を行うコードを出力する(ステップ257)。次に、指
定された割り込みハンドラ処理用スタック領域へスタッ
ク領域を切り替えるスタック切り替え処理を出力する
(ステップ258)。そして割り込みハンドラ内で使用
する自動変数の領域を確保を行う前処理を出力し(ステ
ップ259)、割り込みハンドラのコードを出力する
(ステップ260)。割り込みハンドラからの復帰シス
テムコールが呼び出されていたら(ステップ261)、
先の処理で確保した自動変数で使用した領域の開放を行
う後処理を出力する(ステップ262)。自動変数領域
を開放するコードを出力したら、割り込みハンドラ処理
用スタック領域から元のスタック領域へもスタック切り
替えコードを出力する(ステップ263)そして、割り
込みハンドラの復帰システムコール呼び出す命令を出力
し(ステップ264)、レジスタの復帰命令を出力し
(ステップ265)、割り込みハンドラ復帰コードの出
力(ステップ266)を行う。そして、オブジェクト出
力が完了したかを調べるステップ(ステップ251)に
戻る。
【0051】このようにして、データ出力が完了するま
で、上記の処理を繰り返し行い、最後のオブジェクト・
モジュール・ファイル108として出力して(ステップ
273)言語処理装置102の処理は終了する。
【0052】次に、言語処理装置102で処理された割
り込みハンドラの例を説明する。図4は言語処理装置1
02で処理された、割り込みハンドラ指定有りでスタッ
ク領域の切り替え指示有りの関数のフローチャートであ
る。図5はその関数の記述例で、図5(a)はソース・
プログラム・ファイル101で、図5(b)は図5
(a)のソース・プログラム・ファイル101を言語処
理装置102で処理した結果で、ソース・プログラム・
ファイル101と対応してどのようなコードが出力され
たかを示している。
【0053】図4では、まず、割り込みハンドラではレ
ジスタの退避を行い(ステップ301)、割り込みされ
たプログラムの再開可能なようにしておく。次に、スタ
ック領域を割り込みハンドラ用スタック領域へ切り替え
る(ステップ302)。自動変数領域を確保し(ステッ
プ303)、割り込みハンドラ処理を行う(ステップ3
04)。割り込みハンドラ処理を終了すると、自動変数
領域を開放し(ステップ305)、スタック領域をタス
ク処理用スタック領域へ切り替え(ステップ306)、
最後に割り込みハンドラからの復帰システムコールを呼
び出す(ステップ307)。
【0054】図5(a)で、411は言語処理装置10
2がスタックを切り替える関数と認識するためのキーワ
ードで、“#pragma rtos interrupt”というキーワード
の後にかかれた関数名がスタックを切り替える割り込み
ハンドラで、“sp= ”として切り替える先のアドレスを
指定している。この例では関数func Aに対しスタック切
り替えの指定を行っており、同時に“sp=0x0fdffL0”と
して割り込みハンドラ処理用スタック領域のアドレスを
0x0fdff 番地を指定している。412は関数内で使用す
る変数を確保しているところで、413は割り込みハン
ドラ処理の本体で、この例ではリアルタイムOSのシス
テムコールを呼び出している。414は割り込みハンド
ラ処理からの復帰用システムコールである。
【0055】上記のようにソース・プログラム・ファイ
ル101を記述し、言語処理装置102で処理すると、
図5(b)に記述したようなオブジェクト・プログラム
・ファイルが出力される。421はこの関数を割り込み
ハンドラとして指定したことによりステップ257によ
って出力されたレジスタ退避処理で、このレジスタ内で
あるデータは、割り込まれて(割り込みが発生したとき
に動いていた)アタスクが実行を再開するのに必要な情
報、つまりタスクコンテキストである。422はスタッ
ク切り替えを指定したことにより、ステップ258によ
って出力されたスタック切り替え処理である。この42
2において、先の411で指定されたスタック領域に切
り替える処理を行う。423は図5(a)の412を記
述したことにより言語処理装置102が出力した前処理
で、定義された変数の記憶領域をスタック領域上に確保
している。424はこの割り込みハンドラのコードが出
力されている部分で、413で記述しているシステムコ
ール呼び出しの部分を記述した。425は前処理でスタ
ック領域上に確保した変数の領域を開放している処理
で、426は図5(b)422で切り替えたスタック領
域を元のスタック領域に戻す処理である。427は割り
込みハンドラ処理からの復帰処理を行うシステムコール
を呼び出しているところである。428は図5(b)4
21で退避したレジスタを復帰する処理で、429は割
り込みハンドラからの復帰命令である。
【0056】この割り込みハンドラが実行されている状
態のスタック領域を図6に示す。503は割り込みが入
るまでタスクが使用していたスタック領域で、502は
割り込みが入ってきたことによって退避されたレジスタ
の内容が入っている領域で、501は図5の411で退
避したレジスタの内容が入っている領域である。511
は割り込みハンドラ内で使用する自動変数の内容を記憶
しておく領域で、図5の413で確保した領域である。
【0057】この言語処理装置102の処理によって出
力されたオブジェクトを実行すると、システム全体のス
タック使用量は図7に示したようになる。
【0058】従来技術の説明で、図8および図5を用い
て説明したときと同様に、アリアルタイムOS上に3つ
のタスクTASK A,TASK B,TASK Cが
存在し、1つの割り込みハンドラHnd Aが存在した
場合に、前記キーワードを付加したソース・プログラム
と、言語処理装置102を用いて翻訳した場合における
タスクの使用するスタック領域は図7に示したようにな
る。この図7では、図8および図15と同様に、タスク
コンテキストは5バイト分の領域612が、レジスタ退
避に2バイト分の領域611が必要なものとして記述し
ている。図8と同様に、タスクTASK Aの処理中に
13バイトのスタック領域610、タスクTASK
の処理中に3バイトのスタック領域630、タスクTA
SK Cの処理中に8バイトのスタック領域650を使
用し、ハンドラHnd Aの処理中に10バイト(ハン
ドラHnd Aの自動変換領域602,604,606
に4バイト、ハンドラHnd Aの処理中に6バイトの
スタック領域680)のスタック領域を使用するものと
している。このとき、タスクTASK Aの総スタック
使用量はTASK Aのスタック領域610の13バイ
トとタスクコンテキスト612の5バイト、レジスタ退
避分611の2バイトの計20バイト、タスクTASK
Bの総スタック使用量はタスクTASK Bのスタッ
ク領域630の3バイトとタスクコンテキスト632の
5バイト、レジスタ退避分631の2バイトの計10バ
イト、タスクTASK Cの総スタック使用量はTAS
Cのスタック領域650の8バイトとタスクコンテ
キスト652の5バイト、レジスト退避分651の2バ
イトの計15バイト、ハンドラHnd Aの総スタック
使用量はハンドラHnd Aスタック領域680の6バ
イトと、ハンドラHnd Aの自動変数領域670の4バ
イトの計10バイトになる。このアプリケーションにお
いて確保すべきスタック領域の大きさは全てのタスクT
ASK A、TASK B、TASK Cの総スタック
使用量を加えた55バイトとなる。スタック領域を切り
替えない場合と比較すると、20バイトのメモリ領域の
削減に、OSのシステムコールを呼び出すことによりス
タック領域を切り替える方法と比較すると、12バイト
のメモリ領域の削減になっている。
【0059】なお、図2、図3に示した処理手順はスタ
ック領域切り替えプログラムとして記憶媒体(FD,R
OM,CDROMなど)に記録され、CPUにより実行
されて、スタック領域の切り替えが行われる。
【0060】従来例や実施形態ではタスク数が3、割り
込みハンドラ数が1であったが、実際にOS上で動作す
るタスクの数やハンドラの数はアプリケーションによっ
て異なる。よって、従来方法と比較して本発明の方法で
どの程度スタック領域が削減されるかはそのアプリケー
ション中のタスクの数や割り込みハンドラの数、割り込
みハンドラで使用するスタック量によって決まる。
【0061】
【発明の効果】以上説明したように本発明によれば、言
語処理装置にある特定のキーワードが識別できるように
し、そのキーワードの記述によって、スタック領域切り
替えコードを割り込みハンドラで必要となる自動変数な
どのための領域確保以前に出力することにより、システ
ムで必要とするスタック領域の削減を行うことができ、
また、スタック領域にコピーを行う必要がないため、切
り替え処理が早くなるという効果がある。
【図面の簡単な説明】
【図1】本発明の一実施形態の言語処理装置の構成図で
ある。
【図2】言語処理装置102の処理を示すフローチャー
トである。
【図3】言語処理装置102の処理を示すフローチャー
トである。
【図4】割り込みハンドラの処理を示すフローチャート
である。
【図5】割り込みハンドラの記述例(図5(a)はソー
ス・プログラム・ファイル、図5(b)はソース・プロ
グラム・ファイルを言語処理装置で処理した結果)を示
す図である。
【図6】スタック領域のイメージ図である。
【図7】スタック領域のイメージ図である。
【図8】従来技術のスタック領域のイメージ図である。
【図9】従来の言語処理装置の構成図である。
【図10】言語処理装置802の処理を示すフローチャ
ートである。
【図11】言語処理装置802の処理を示すフローチャ
ートである。
【図12】図12(a)は割り込みハンドラ処理のフロ
ーチャート、図12(b)は割り込みハンドラ処理用ス
タック領域への切替処理のフローチャート、図12
(c)はタスク処理用スタック領域への切替処理のフロ
ーチャートである。
【図13】割り込みハンドラの記述例を示す図である。
【図14】スタック領域のイメージ図である。
【図15】スタック領域のイメージ図である。
【符号の説明】
101 ソース・ファイル 102 言語処理装置 103 構文解析部 104 コード生成部 105 結果出力部 106 キーワード認識部 107 スタック切替コード 108 オブジェクト・モジュール・ファイル 100、221〜234、241〜244、251〜2
73 ステップ 301〜307 ステップ 410 割り込みハンドラ・ソース・ファイル 411 スタック領域切り替え有り割り込みハンドラ
指定記述 412 自動変数確保処理 413 割り込みハンドラ本体処理 414 割り込みハンドラ終了処理呼び出し 420 割り込みハンドラ・コードファイル 421 レジスタ群退避コード 422 スタック領域切り替えコード 423 自動変数領域確保コード 424 割り込みハンドラ本体処理コード 425 自動変数領域解放コード 426 スタック領域切り替えコード 427 割り込みハンドラ終了処理呼び出しコード 501 タスクコンテキスト 502 割り込み処理発生に伴うレジスタ退避領域 503 タスクで使用しているスタック領域分 511 自動変数領域 601 タスクTASK Aで必要とするスタック領
域 603 タスクTASK Bで必要とするスタック領
域 605 タスクTASK Cで必要とするスタック領
域 607 ハンドラHnd Aで必要とするスタック領
域 610 タスクTASK Aが使用するスタック領域 611 レジスタ退避分 612 タスクコンテキスト 630 タスクTASK Bが使用するスタック領域 631 レジスタ退避分 632 タスクコンテキスト 650 タスクTASK Cが使用するスタック領域 651 レジスタ退避分 652 タスクコンテキスト 670 ハンドラHnd Aで確保する自動変数領域 680 ハンドラHnd Aで必要とするスタック領
フロントページの続き (58)調査した分野(Int.Cl.7,DB名) G06F 9/46 G06F 9/45 G06F 9/06 JICSTファイル(JOIS) CSDB(日本国特許庁)

Claims (3)

    (57)【特許請求の範囲】
  1. 【請求項1】 割り込み処理が高級言語で記述された場
    合に、リアルタイムOS上で動作するアプリケーション
    の割り込み処理における、タスク領域のタスク処理用ス
    タック領域から割り込みハンドラ処理用スタック領域へ
    の切替方法であって、 ソース・プログラム・ファイルの解析過程において、割
    り込みハンドラであり、かつスタック領域を切り替える
    関数を指定するキーワードを認識すると、指定された関
    数を記憶するともに、割り込みハンドラ処理用スタック
    領域のアドレスを取得する段階と、 前記ソース・プログラム・ファイルの解析された結果に
    基づいて生成されたコードの出力中に、前記の指定され
    た関数を検出すると、割り込みが発生した時点のレジス
    タ群を退避するコードを出力した後、前記アドレスにス
    タック領域を切り替えるコードを出力し、割り込みハン
    ドラのコードを出力する段階と、 割り込みハンドラから復帰するOSのシステムコールが
    呼び出されたら、割り込みハンドラ処理用スタック領域
    から割り込まれた時点のスタック領域に戻すコードを出
    力し、割り込みハンドラから復帰するOSのシステムコ
    ールを呼び出すコードを出力する段階を有するスタック
    領域の切り替え方法。
  2. 【請求項2】 割り込み処理が高級言語で記述された場
    合に、リアルタイムOS上で動作するアプリケーション
    の割り込み処理における、タスク領域のタスク処理用ス
    タック領域から割り込みハンドラ処理用スタック領域へ
    の切替方式であって、 割り込みハンドラであり、かつスタック領域を割り込み
    ハンドラ処理用スタック領域切り替え関数を指定す
    るキーワードを認識する手段と、 前記キーワードを認識すると、前記関数を記憶するとと
    もに、前記割り込みハンドラ処理用スタック領域を取得
    する手段と、 前記ソース・プログラム・ファイルの解析された結果に
    基づいて生成されたコードの出力中に、前記の指定され
    た関数を検出すると、割り込みが発生した時点のレジス
    タ群を退避するコードを出力した後に、前記アドレスに
    スタック領域を切り替えるコードを出力し、割り込みハ
    ンドラのコードを出力する手段と、 割り込みハンドラから復帰するOSのシステムコールが
    呼び出されたら、割り込みハンドラ処理用スタック領域
    から割り込まれた時点のスタック領域に戻すコードを出
    力し、割り込みハンドラから復帰するOSのシステムコ
    ールを呼び出すコードを出力する手段を有するスタック
    領域の切り替え方式。
  3. 【請求項3】 割り込み処理が高級言語で記述された場
    合に、リアルタイムOS上で動作するアプリケーション
    の割り込み処理における、タスク領域のタスク処理用ス
    タック領域から割り込みハンドラ処理用スタック領域へ
    の切替プログラムを記録した記録媒体であって、 ソース・プログラム・ファイルの解析過程において、割
    り込みハンドラであり、かつスタック領域を切り替える
    関数を指定するキーワードを認識すると、指定された関
    数を記憶するとともに、割り込みハンドラ処理用スタッ
    ク領域のアドレスを取得する手順と、 前記スース・プログラム・ファイルの解析された結果に
    基づいて生成されたコードの出力中に、前記指定された
    関数を検出すると、割り込みが発生した時点のレジスタ
    群を退避するコードを出力した後に、前記アドレスにス
    タック領域を切り替えるコードを出力し、割り込みハン
    ドラのコードを出力する手順と、 割り込みハンドラから復帰するOSのシステムコールが
    呼び出されたら、割り込みハンドラ処理用スタック領域
    から割り込まれた時点のスタック領域に戻すコードを出
    力し、割り込みハンドラから復帰するOSのシステムコ
    ールを呼び出すコードを出力する手順を有するスタック
    領域切替プログラムを記録した記憶媒体。
JP9151236A 1997-06-09 1997-06-09 スタック領域の切替方法、方式およびスタック領域切替プログラムを記録した記憶媒体 Expired - Fee Related JP3039450B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP9151236A JP3039450B2 (ja) 1997-06-09 1997-06-09 スタック領域の切替方法、方式およびスタック領域切替プログラムを記録した記憶媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP9151236A JP3039450B2 (ja) 1997-06-09 1997-06-09 スタック領域の切替方法、方式およびスタック領域切替プログラムを記録した記憶媒体

Publications (2)

Publication Number Publication Date
JPH10340194A JPH10340194A (ja) 1998-12-22
JP3039450B2 true JP3039450B2 (ja) 2000-05-08

Family

ID=15514233

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9151236A Expired - Fee Related JP3039450B2 (ja) 1997-06-09 1997-06-09 スタック領域の切替方法、方式およびスタック領域切替プログラムを記録した記憶媒体

Country Status (1)

Country Link
JP (1) JP3039450B2 (ja)

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
発明協会公開技報・公技番号89−12955

Also Published As

Publication number Publication date
JPH10340194A (ja) 1998-12-22

Similar Documents

Publication Publication Date Title
JP2692609B2 (ja) マルチタスクのプログラムデバッグ方法とその装置
US5150474A (en) Method for transferring arguments between object programs by switching address modes according to mode identifying flag
JP3039450B2 (ja) スタック領域の切替方法、方式およびスタック領域切替プログラムを記録した記憶媒体
JP2671160B2 (ja) 例外処理方式
JP2743860B2 (ja) 利用者プログラムのデバッグ処理システム
JP2715988B2 (ja) プログラムシミュレータ装置及びプログラムデバッグ方法
JP2738360B2 (ja) マルチタスクプログラムのデバッグ方法およびデバッグシステム
JP3024131B2 (ja) コンパイラシステム
JP3159155B2 (ja) プログラムのデバッグ方法および装置
JP2932812B2 (ja) 言語処理プログラム実行装置
JPH0764802A (ja) リアルタイムシステムのシミュレーション装置
JP2000076095A (ja) プログラムトレース装置およびプログラムトレース方法およびそのプログラムを記憶した記憶媒体
JPH0962512A (ja) 低級言語から高級言語への記述言語変換機能を有するプログラム変換装置及び方法
KR0154616B1 (ko) 실시간 병행 처리 시스템을 위한 레지스터윈도우 스위칭 방법
US7627859B2 (en) Method for configuring non-script language library files to be run as scripts
JPH0675957A (ja) 編集中障害の復旧機構
JP3018783B2 (ja) コンパイル方式
JP3130421B2 (ja) プログラム解析方法および装置
JPH034336A (ja) プログラムデバッグ処理装置
JPH07334374A (ja) 割り込み検出処理装置
JPS63163636A (ja) 並列処理実行方式
JPH02113336A (ja) 非同期例外捕獲方式
JPS604492B2 (ja) 計算機
JPH0231241A (ja) プログラム逆順復元方式
JPH06259282A (ja) デバグ割込み処理装置

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080303

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090303

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100303

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100303

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110303

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110303

Year of fee payment: 11

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110303

Year of fee payment: 11

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110303

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120303

Year of fee payment: 12

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130303

Year of fee payment: 13

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130303

Year of fee payment: 13

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140303

Year of fee payment: 14

LAPS Cancellation because of no payment of annual fees