研究概要 |
1.オートマトンの設計 オートマトンにより命令解釈を行う(動的命令を含む)プログラムP_xの性質を次のように決定した.オリジナルの(動的命令を含まない)プログラムをP_O,Ins_<PO>およびIns_<P_x>をそれぞれP_OおよびP_xの命令セットとし,L_<PO>とL_<P_x>を,それぞれP_OとP_xのプログラミング言語とする.L_<P_x>はL_<PO>とは同一のオペコードセットと持つが,オペランドシンタックスは異なる.P_Oの個々のオペコードは,同一のバイト長を持つP_xのオペコードへと変換される.ただし,P_xの各オペコードに続くオペランドの型および個数は,P_Oにおけるオペランドと異なる.そのため,P_xは言語L<PO>として不正である.この設計は,Ins_<PO>=Ins_<P_x>であるため実装が容易である. 2.オートマトンの制御方式の設計 P_xに含まれる分岐オペコードc_jの解釈時に,c_jの分岐先で状態q_kへと遷移することが求められる場合,c_jの手前に予めダミー命令を挿入しておくことで状態のq_jへ強制的に遷移し,その後,c_jによってq_kへと遷移することとした.このような制御を行う条件として,オートマトンの全ての状態q_kおよび分岐オペコードc_jについて,δ_i(c_j)=q_kを満たす状態q_iが存在することが求められる.ここで,δ_iは状態q_iにおける状態遷移関数である. 3.P_Oから動的命令を含むプログラムP_xへの変換アルゴリズムの設計 オートマトンW_xに対応する逆変換オートマトンW_x^<-1>を定義し, W_x^<-1>を用いてプログラム変換P_O→P_xを行うアルゴリズムT_xを提案した.この変換アルゴリズムT_xは,プログラムカウンタの値を記憶するためのスタック,及び,スタックに対する操作pushとpopを用いて効率良く実行できる.
|