C言語での作成方法
- 5 名前: 匿名488 投稿日:2003/12/15(月) 16:14 ID:???
- >要するにリードレジスタとライトレジスタはアドレスが同じ
これは、「レジスタ」という名称から、メモリを想像
されているのだと思います。
たしかに「レジスタ」そのものはメモリ相当だとは思いますが、リードアクセス時と
ライトアクセス時で別の領域が割り当てられるので、
(わかりにくいですが)同じアドレスで大丈夫です。
ただし、いくつかの拡張レジスタの中には、
あらかじめアドレスを特定のレジスタに書き込むことで
複数の拡張レジスタを使い分けている物があります。
そのようなレジスタに書き込みする際には、
out レジスタ選択レジスタ?,レジスタ番号指示データ
out 共有レジスタアドレス,データ
のように、
読み出しの際にも
out レジスタ選択レジスタ?,レジスタ番号指示データ
in R0,共有レジスタアドレス
のようにしなければいけないとおもいます。
なお、この2つの命令の間で他のタスクに制御が
うつるとレジスタ指定が壊れますので
(2つのシーケンスは不可分)
そのあたりに配慮する必要があります。
うっかり忘れると、原因不明のバグに悩まされることに
なります。
新着レスの表示