テーマ: I/OポートアクセスのプログラムをCで記述する際の注意点
正解はこちら
解答:イ
[基礎知識・用語のまとめ]
メモリマップドI/O方式・・・I/Oポートにアクセスする方式の一つです。メインメモリの中にI/O空間を確保して使う方式でデバイスとメモリに対して同じ命令後を利用できます。自由度が高くなる一方、CPUとI/Oデバイスが同じメモリアドレスを共有することになるため、プログラミング中で注意が必要です。
I/OマップドI/O方式・・・I/Oポートにアクセスする方式の一つです。メモリのアドレス空間を幅広く利用できますが、それ相応のハードウェア(レジスタなど)が必要となります。現在はハードウェアの性能が向上したため、こちらが主流になりつつあります。
volatile型修飾子・・・この修飾子をつけて変数宣言すると,その変数は最適化の対象から外され,レジスタに割り付ける最適化などを行わなくなります。
[解法]
volatile修飾子を利用すると、レジスタへの格納を抑え、結果的にコンパイルの最適化を抑止できるようになります。したがって「イ」が正解です。
他の選択肢の誤りは以下の通りです。
ア→IN/OUT命令を用いるのは、I/OマップドI/O方式の場合です。
ウ→静的広域変数とは、プログラムがメモリにロードされたアドレスが決まっている広域変数であり、他の関数からのアクセスが防げるわけではありません。
エ→volatile型修飾子を使えば、ポインタでもアクセス可能です。
[参考]
volatile という言葉は「揮発性の」、つまりすぐに変わってしまうという意味を持つ、、、らしい。
利用させていただきました素材へのリンク
うさちゃこちゃんねる様 https://www.youtube.com/channel/UCQcDdg4W6r5OfcB1JTcpABw
ここまで読んでくれてありがとう!!
感謝!
コメント