«前の日記(2008年03月10日) 最新 次の日記(2008年03月14日)» 編集

日々をアレコレ


2008年03月12日

風邪継続中

微熱を保ちつつ、のどが痛い、咳が出る。風邪の症状が治まらない。そこへ向けて、花粉症らしき症状も(風邪の症状?)。辛い。

ワード型と言ったら何バイト?

組み込みではありがちな、メモリアクセスのための構造体を自作した。もちろん、16ビットアクセス、8ビットアクセス、1ビットアクセスできるように共用体を利用する。でも、デバッグトレースでその目的アドレスを追いかけても書き換わってくれない。おかしい、おかしいと悩むこと数時間。使っていたワード型のサイズが4バイトだったことに気づく。そのせいで、構造体のメモリ配置がおかしなことになっていた。もうね、愕然とした。そんな初歩の間違いをしている自分に愕然とした。

一つ言い訳をするならば、Windows系だとWORD型は2バイトなんだよ。DWORD型で4バイト。僕は、組み込み系に憧れるWindows系プログラマだから、仕方ないよね?

本日のツッコミ(全4件) [ツッコミを入れる]
さくらだ (2008年03月13日 22:48)

構造体でメモリアクセスすること自体も、危ないですよ。<br>宣言で並べた通りにメモリ配置してくれる保障はないので。

shaga (2008年03月14日 00:11)

すいません。僕の失敗は構造体でレジスタにアクセスしようとしておきました。<br><br>でも、変数の宣言時にvolatileをつけてもメモリ配置は構造体の通りにならないんですかね?

さくらだ (2008年03月14日 12:57)

> 変数の宣言時にvolatileをつけても<br><br>コンパイラの勝手な都合で並べ替えることがあるみたいですよ。<br>そういうバグを傍目ですが見たことがあります。

さくらだ (2008年03月14日 12:57)

あ、レジスタアクセスだったかな?ただのメモリだったかな?正直忘れてます。なのでVolatileが効くかどうかは不明ですm(__)m


«前の日記(2008年03月10日) 最新 次の日記(2008年03月14日)» 編集