エンベデッドシステムスペシャリスト暗記無料で始める

メモリマップドI/OのI/Oポートにアクセスするプログラムをc言語で記述するときの注意点として、適切なものはどれか。

エンベデッドシステムスペシャリスト試験/2018年度 春期 午前Ⅱ 問1/開発 / コーディング規約

選択肢

正解と解説

正解:イ コンパイラによる最適化を抑止するために、volatile型修飾子を付けて宣言した変数へのポインタとしてアドレスを指定して、アクセスする。

メモリマップドI/Oでは、I/Oレジスタが主記憶と同じアドレス空間に割り付けられ、通常のメモリアクセスと同じ手段で読み書きする。ただしI/Oレジスタの値はハードウェア側が勝手に書き換えるため、コンパイラが「値は変わらない」と判断してアクセスを削除したり順序を入れ替えたりすると正しく動作しない。そこでvolatile型修飾子を付けたポインタ経由でアクセスし、最適化による読み書きの省略・並べ替えを抑止するのが定石である。

この問題を解く(同じ分野をあと9問) →

選択肢ごとの解説

出典:平成30年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問1(IPA)原本の紙面を見る(IPA 問題冊子より)

この問題は2回出題されています

この問題に出た用語

同じ分野の他の問題

最終更新:2026-10-06/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。