【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.20433

リードしないで1ビットだけ書き換えたい
投稿者---sinemby(2005/03/21 11:02:01)


あるCPUのアドレスのデータ(write only)の1ビットだけ
を書き換える方法はありますでしょうか。
それとも1度リードしてからビット演算しないとだめでしょうか。



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:リードしないで1ビットだけ書き換えたい 20434 おでん 2005/03/21 12:24:08
<子記事> Re:リードしないで1ビットだけ書き換えたい 20437 だん 2005/03/21 14:26:14
<子記事> Re:リードしないで1ビットだけ書き換えたい 20438 shu 2005/03/21 15:08:38


No.20434

Re:リードしないで1ビットだけ書き換えたい
投稿者---おでん(2005/03/21 12:24:08)


>あるCPUのアドレスのデータ(write only)の1ビットだけ
>を書き換える方法はありますでしょうか。
>それとも1度リードしてからビット演算しないとだめでしょうか。

CPUによると思いますが・・・
ビット演算(68K系だとBSETなど)もメモリのアクセス単位(たいていは
1バイト)を読み込んでからUPU内部で演算するものです。

読み出してしまうと値が有効でなくなったり、割り込みが入ったり
するデータなのでしょうか?

write only・・・とは?



この投稿にコメントする

削除パスワード

No.20436

Re:リードしないで1ビットだけ書き換えたい(訂正)
投稿者---おでん(2005/03/21 14:18:03)


>1バイト)を読み込んでからUPU内部で演算するものです。
>

正:1バイト)を読み込んでからCPU内部で演算するものです。



この投稿にコメントする

削除パスワード

No.20437

Re:リードしないで1ビットだけ書き換えたい
投稿者---だん(2005/03/21 14:26:14)


ライトオンリーのレジスタの事だとして...
通常ライトオンリーのレジスタにビット演算し書き込む場合は
ある変数を作り、その変数をビット演算するようにし、
データを書き込む場合は、その変数のデータを書き込むようにします。

unsigned char aaa; /* グローバル変数として定義 */
aaa = aaa | 0x01; /* 1Bit編集 */
*(unsigned char*)(????) = aaa; /* */

注意点としては
ライトオンリーのレジスタに書き込む時は必ず変数aaaを介し、
コヒーレンシ制御することです。


この投稿にコメントする

削除パスワード

No.20438

Re:リードしないで1ビットだけ書き換えたい
投稿者---shu(2005/03/21 15:08:38)


>あるCPUのアドレスのデータ(write only)の1ビットだけ
>を書き換える方法はありますでしょうか。
>それとも1度リードしてからビット演算しないとだめでしょうか。


ポインタを用意して、
ポインタにアドレスを代入して、
ポインタ先のデータのあるビットを反転。
(0と1しかないビットの書き換えは、反転を表す)


unsigned char *p;

p = アドレス値;

*p ^= 0x?;

?は反転したい、ビットを表します。


この投稿にコメントする

削除パスワード

No.20447

Re:リードしないで1ビットだけ書き換えたい
投稿者---REE(2005/03/22 09:41:35)


>p = アドレス値;
>
>*p ^= 0x?;
>
>?は反転したい、ビットを表します。

どうみても一度リードしてからビット演算しているように見えますが、
勘違いでしょうか?



この投稿にコメントする

削除パスワード

No.20448

Re:リードしないで1ビットだけ書き換えたい
投稿者---だん(2005/03/22 11:21:56)


>*p ^= 0x?;

(1)データ読み出す
(2)ビット編集
(3)データ書き込み
のような流れになるので
ライトオンリーではやってはいけないです


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧