1. ホーム
  2. c

[解決済み] asm("nop");はどのように動作するのですか?

2022-02-12 16:52:28

質問

の定義を再確認しました。 http://en.wikipedia.org/wiki/NOP しかし、もっと簡単な定義が必要だ。

あるコードを偶然見つけたのですが、それが何をするものなのかよくわかりません。

switch (Something)
    {

        case this_one:
            asm ("nop");
            break;
        case other_one:
            asm ("nop");
            break;
        default:
            asm ("nop");
            break;
    }

解決方法は?

nop は、何もしないアセンブリ命令で、まあ限りなく何もしないに近いのですが、それでもマシン命令を実行します。

この場合、ステートメント asm("nop"); は、プログラムにとって意味上の違いはありません。この文が存在する唯一の理由は、コンパイラがコードパスを折り返さないように強制することで、オブジェクトコードを見たり、マシンコードをディスアセンブルしたり、デバッガで表示したりすると、switch文のマシン構造が見えるようにするためだと考えられます。