トップページ

本棚


両手で1000まで数えられますか?:2進法の話
数値 - 危険物取り扱い注意
100 × 200 =32?:変数のオーバーフローの話
パリティビット
小数の扱いについて
ぽいんた
ぽいんた2
ぽいんた3
ジ・オリジン
ジ・オリジン:補足
かっこつける話
かっこつける話2
文字列のこと
タイミングの話
拡張性の話
取り込む話
staticな話

コンパイルの話1
コンパイルの話2:止まらぬビルド
コンパイルの話3:マシン語に落ちるということ1:メモリの話
コンパイルの話4:マシン語に落ちるということ2:最適化
コンパイルの話5:マシン語に落ちるということ3:変数とスタック
コンパイルの話6:コンパイラはそもそも何をやってくれるのか??
リンクの話
プリプロセッサの話

OS、というもの

オブジェクト指向1
オブジェクト指向:2
オブジェクト指向:3

オブジェクト指向:番外 C言語のソースファイルの話
オブジェクト指向:番外 C言語での「再利用性」と「カプセル化」データ構造とアルゴリズム


抽象的な話

寝込んで布団の中で考えたこと
こんなの、常識??
お仕事プログラミング
ソフトでハードなプログラム
プログラムするということ
お勉強
プログラムを学ぶということの補足
C言語:「学問」と「実務」
統合開発環境
C言語ってポータブルですか?
C言語ってポータブルですか?:2
あなたは、どう読みますか?
ああ勘違い
試してガッテン
低級品
質問をするということ
ポカ
「何もしない」 != 「無駄」
エディタの話
もっと手を抜こう

いまどきの、アセンブラ

VisualStudio2005
VisualStudio2005:2

戦争の防ぎ方、に対する私の考え
身近な差別
改革
地球に優しいなんて大嘘
統計で嘘をつく方法

言葉について
言葉について:2

神が死んだということ
善悪の彼岸から、力への意思を目覚めさせるということ

本を読むということ
本を読むということ:2

絵を描く話
地図
地球儀

オカルトのお話
がんだむさん
RPGソフトウェア
記紀神話の不思議



メニュー

※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

たいていのCPUには、「何もしない」ための命令が実装されています。
「No OPeration」ということで通常NOP命令などと言われます。マシン語としてはだいたい0x00h、アセンブラとしてはNOPであらわされることが多いようです。


この命令は、ほんとに何もしないで、実行ファイルのバイナリ領域と実行時のマシンサイクルタイムを消費するだけです。
なぜ、こんな命令が、しかもほとんどのCPUに実装されているのでしょうか?


CPUは、通常単体では意味を成しません。基盤にCPUをおいてVccとGNDをつないでも、それはまったく意味が無いただのオブジェにしかなりません。
したがって必然的に、CPUの周りにはさまざまな周辺回路が接続されることになります。

そういったさまざまな周辺回路とCPUの間でデータや制御命令をやり取りすると言うことは、基板上で通信を行っていると言うことです。

通信とは、自分と相手があることですから、当然信号の同期が必要です。

同期をとると言うことは、
  • 処理速度が遅いほうにあわせる
  • 送受信の開始時にタイミングを合わせる必要がある
と言うことです。

高速なCPUを使っている場合、そのCPUが自分のタイミングで信号を送出したとしても、それを受信する側の機器ではそれを処理することはできません。お互いにデータおよび制御コマンドの送受信を行うためには遅いほうのタイミングにあわせてやら無くてはならないわけです。

そのタイミングあわせに、NOP命令が使われます。

1コマンド送信→NOP→NOP→次のコマンド送信・・・
みたいな感じでしょうか。


また、アセンブラでプログラミングする際によく使われるテクニックに「ジャンプテーブル」と言うものがあります。
詳細は省きますが、このテクニックを使う場合には一定バイトごとにジャンプ命令を並べる必要があります。その際にも、命令を並べるアドレスの調整にNOP命令が使用されます。


さらに、デバッグ時にICEなどを使用していて、一時的にある条件分岐を無効にしたい場合なども、NOP命令でジャンプ命令を上書きしてやれば以降の命令やデータのアドレス値を変更することなく実現することができます。


このように、「何もしない」という命令は非常に重要な意味を持っているのです。


「何もしない」と言うことが無駄ではなく、むしろ「何もしない」ということそのものが重要な意味を持つというのはなんだか奥が深いように思います。
私たちの身の回りの一見無駄なようなものにももっと深読みしてみると面白い発見があるのかもしれません。




| 新しいページ | 編集 | 差分 | 編集履歴 | ページ名変更 | アップロード | 検索 | ページ一覧 | タグ | RSS | ご利用ガイド | 管理者に問合せ |
@wiki - 無料レンタルウィキサービス | プライバシーポリシー