アカウント名:
パスワード:
'a'を'A'に書き換えたくて
*p = 'A';
そういう時に「コンパイラがバイトアクセスに展開するのを当てにせずに、そこだけアセンブラに」とかやっていたらきりがありませんよ。
# ちょっと手元に標準仕様がないんで戯言扱いで
1バイトだけの書き換えでも、4バイト読み→1バイト変更→4バイト書き (Read-Modify-Write) で実装する可能性もあるからでは。
読み書き先が volatile だと上記の方法を使うのは NG だと思われます。
ポインタなんだから1byteアクセスが正しいはずで
ここは、「charへのポインタなんだから」と勝手に推測します。
なんで4byteもアクセスされるのかがわかんないです。
コンパイラがバグっているからです。
元の話の例では2バイトアクセスになっています。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
UNIXはただ死んだだけでなく、本当にひどい臭いを放ち始めている -- あるソフトウェアエンジニア
「本物の」バイト単位でのメモリアクセスが必要だって事? (スコア:0)
Re:「本物の」バイト単位でのメモリアクセスが必要だって事? (スコア:2, 参考になる)
'a'を'A'に書き換えたくて
としたときに4バイトアクセスされて後ろの3バイトを壊されるかもしれません。そういう時に「コンパイラがバイトアクセスに展開するのを当てにせずに、そこだけアセンブラに」とかやっていたらきりがありませんよ。
Re:「本物の」バイト単位でのメモリアクセスが必要だって事? (スコア:0)
・・・すみません。
本気で何が悪いのか分からないんで解説してもらえませんか?
ポインタなんだから1byteアクセスが正しいはずで
なんで4byteもアクセスされるのかがわかんないです。
Re:「本物の」バイト単位でのメモリアクセスが必要だって事? (スコア:1)
# ちょっと手元に標準仕様がないんで戯言扱いで
1バイトだけの書き換えでも、4バイト読み→1バイト変更→4バイト書き (Read-Modify-Write) で実装する可能性もあるからでは。
読み書き先が volatile だと上記の方法を使うのは NG だと思われます。
Re:「本物の」バイト単位でのメモリアクセスが必要だって事? (スコア:1)
ここは、「charへのポインタなんだから」と勝手に推測します。
コンパイラがバグっているからです。
元の話の例では2バイトアクセスになっています。