SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

たった5つのルールではじめるC言語開発

シフト演算


シミュレータSM+で動作の様子を見てみよう

 今回、新しいプロジェクトを作成しましたので、SM+が起動するときに動作環境の設定ウィンドウが表示されます(図22)。

図22:SM+の動作設定ウィンドウ
図22:SM+の動作設定ウィンドウ

 以前も登場しましたが、忘れてしまった方のために再度説明します。マイコンの動作クロックに相当する「Oscillation Frequency」という項目の数字を「5」(MHz)から「8」(MHz)に変更してください(図23)。それだけです。

図23:Oscillation Frequencyを8(MHz)にする
図23:Oscillation Frequencyを8(MHz)にする

 右上の[OK]をクリックすると、今度はロード・モジュール・ファイルをロードするか聞いてきます。[はい(Y)]をクリックしてください(図24)。

図24:ロード・モジュール・ファイルの読み込みの問い合わせ
図24:ロード・モジュール・ファイルの読み込みの問い合わせ

 こうしてSM+が起動すると、図25のように表示されます。

図25:SM+起動直後
図25:SM+起動直後

 また前回同様、変数の中身を観察すべく、変数の中身を見る機能を呼び出します。覚えていますか。[ブラウザ]メニューの中にある「ローカル変数」です(図26)。

図26:ローカル変数ウィンドウ
図26:ローカル変数ウィンドウ

 ローカル変数ウィンドウを表示して、ボタンで1行実行すると、変数aが表示されます(図27)。

図27:変数aの表示
図27:変数aの表示

 この例ではすでに値として0x01が表示されていますが、これは前回説明したとおり、もともとメモリの中にあったゴミです。

 さて、今回はシフト演算子を使ってビット(2進数の桁)がずれていく様子を見たいので、値の表示は2進数表示がわかりやすいです。ということで、変数aを右クリックして、メニューで2進数を選びましょう(図28)。

図28:2進数表示を選ぶ
図28:2進数表示を選ぶ

 すると、図29のような表示になります。先頭の0bは、2進数表示であることを示す記号です。その後ろの8桁が2進数で表現した変数aの値です。

図29:2進数表示になった
図29:2進数表示になった

 長らくかかりましたが、ようやくこれでシフト演算子の動作を観察する準備ができました。図30のように、ソース上の実行行を表示するSourceウィンドウとローカル変数ウィンドウを近づけて配置すると、観察がしやすくなります。ここでは7行目まで実行したようすを示しています。いまローカル変数ウィンドウで表示されている変数aの値は、ソースの5行目で代入された値の1です。

図30:シフト演算子観察の準備完了
図30:シフト演算子観察の準備完了

 では7行目をボタンで1行実行してみてください。図31のようになりましたか。ローカル変数ウィンドウのaの値を見てください。さっきまで一番右端にあった1が左にひとつシフトしていますね。

図31:aの値が1ビット左にシフトした
図31:aの値が1ビット左にシフトした

 この調子で、8行目から10行目まで1行ずつ実行して変数の値を観察してみてください。な~るほど、シフト演算子はこんなふうに動作するのですね。最後まで実行して、再度最初から見たいときは、ボタン(リセットアイコン)をクリックしてください。これはマイコンをリセットするアイコンです。これで最初のまだプログラムを実行していない状態に戻すことができます。ただし、ローカル変数ウィンドウの表示フォーマットが16進数に戻ってしまいますので、これも再度2進数に設定しなおす必要があります。

次のページ
シフト演算のちょっとあぶない話

この記事は参考になりましたか?

たった5つのルールではじめるC言語開発連載記事一覧

もっと読む

この記事の著者

舘 伸幸(タチ ノブユキ)

NECマイクロシステム株式会社 勤務NPO法人SESSAME 所属開発ツールのソフトウェア開発を経て組込みソフトウェア開発に従事。プライベートにも半田ごては手放さない。2006年からSESSAME に参加。若い世代に物を作る楽しさを伝えていきたい。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/3726 2009/03/26 18:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー