CNTR ( Counter )はDOループ命令が使用するカウンターレジスタです。あらかじめこのレジスタに値を設定してDOループ命令を実行すると、設定した値の回数だけ繰り返します。
CNTRはDOループ命令を実行するとすぐにカウンタースタックにプッシュされます。そのため、DOループの中でCNTRを変更してもループの実行には影響はありません。
CNTRは16ビット整数レジスタです。内部にビットフィールドはありません。
図1 レジスタの構造
CNTRは内部構造をもちません。
VisualDSP++ 3.0 for 21xxにはCNTR用のAPIは用意されていません。CNTRレジスタはコンパイラがループをDOループ命令で実現するときに自動的に利用しますので、高級言語からいじる必要はありません。
CNTRのレイテンシは以下のとおりです。
命令 | CNTR=value; | |
---|---|---|
レイテンシ | 2 |
上の表のレイテンシは続く命令が
の場合です。それ以外の場合では、レイテンシは1です。
レイテンシが1のとき、直後の命令からその値を使うことができます。レイテンシが2以上のとき、直後の命令でその値を参照しようとすると、古い値を参照します。なお、この表のレイテンシの数え方はHRとは異なっています。
このレジスタにはインターロック機構はついていません。
項目 | マニュアルのページ等 |
---|---|
ループと制御 | HR 3-21 |
スタックと制御 | HR 3-34 |
DOループ命令 | ISR 8-22 |