命令セットシミュレータ
ISS は、ソフトウェアエンジニアやプログラマが開発対象のハードウェアを入手する前にプログラムをデバッグできるようにするため、それ自体デバッガとして、またはデバッガと共に提供されることが多い。GNUデバッガはこうした ISS を組み込んだデバッガの一つである。ISS はタイマーや割り込み、シリアルポートや一般的なI/O ポートなど、マイクロコントローラ全体の動きを模倣するための擬似的な周辺回路と結合されている場合もある。
基本的な命令のシミュレーション技術は、目的によらず同一である。まずモニタプログラムが対象のプログラムの名前を入力パラメータ共に受け取る。
対象のプログラムはメモリ上にロードされるが、コードに制御が渡されることはない。代わりに、ロードされたプログラムのエントリーポイントが計算され、擬似的なプログラムカウンタ(PSW)がその位置に設定される。擬似的なレジスタの内容は、対象のプログラムを直接実行する場合と同じように設定する。
ここで、ハードウェア構成やOSによっては、レジスタの一部が他の"制御ブロック"を示すように設定しておく必要がある。
その後、命令の実行は下記のように行われる。