[解決済み] CILのnopオペコードの目的は何ですか?
2023-06-27 09:06:32
質問
MSILを調べていて、たくさんの nop という命令がたくさんあることに気づきました。
MSDN の記事によると、これらは何もせず、オペコードにパッチが適用された場合にスペースを埋めるために使用されるそうです。これらは、リリース ビルドよりもデバッグ ビルドでより多く使用されます。
この種のステートメントはアセンブリ言語で後の命令を整列させるために使用されることは知っていますが、なぜ MSIL の nops は MSIL で必要なのでしょうか?
(編集者注: 受け入れられた答えはマシンコードのNOPについてであり、質問がもともと尋ねていたMSIL/CIL NOPについてではありません)。
どのように解決するのですか?
NOPはいくつかの目的があります。
- NOP は、生成されたコード内で他の行と結合されている場合でも、デバッガーがその行にブレークポイントを置くことを可能にします。
- ローダーが異なるサイズのターゲット オフセットを持つジャンプにパッチを適用することを可能にします。
- コードのブロックが特定の境界でアライメントされることを可能にし、これはキャッシュに適している場合があります。
- 関数全体のサイズが変わることを気にすることなく、新しいセクションへの呼び出しでコードのチャンクを上書きするインクリメンタルリンクを可能にします。
関連
-
[解決済み] Collatz予想の検証を行うC++のコードは、なぜ手書きのアセンブリよりも高速に動作するのでしょうか?
-
[解決済み】スタックの目的は何ですか?なぜそれが必要なのですか?
-
[解決済み] Gnuアセンブラ(GAS)のCFIディレクティブは何のためにあるのですか?
-
[解決済み] コールスタックはどのように機能するのか?
-
[解決済み] なぜx86は醜いのか?なぜ他と比較して劣っていると言われるのか?[クローズド]
-
[解決済み] gdbで指定されたアドレスのアセンブリ命令をブレークするには?
-
[解決済み] 学習会【終了
-
[解決済み] x86アセンブリの「rep; nop;」とはどういう意味ですか?pause "命令と同じですか?
-
[解決済み] ARMにおけるSP(スタック)とLRとは?
-
[解決済み] x86のIN命令とOUT命令は何に使われるのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] FS"/"GS "レジスタは何のためにあるのですか?
-
[解決済み] コールスタックはどのように機能するのか?
-
[解決済み] なぜx86は醜いのか?なぜ他と比較して劣っていると言われるのか?[クローズド]
-
[解決済み] gdbで指定されたアドレスのアセンブリ命令をブレークするには?
-
[解決済み] なぜインテルはプロセッサーに内蔵RISCコアを隠すのか?
-
[解決済み] x86アセンブリの「rep; nop;」とはどういう意味ですか?pause "命令と同じですか?
-
[解決済み] x86_64 registers rax/eax/ax/al overwriting full register contents [duplicate] レジスタの内容をすべて上書きする。
-
[解決済み] アセンブリ言語ではスタックはどのように機能するのですか?
-
[解決済み] ここでいう「@plt」とは、どういう意味でしょうか?
-
[解決済み] x86のIN命令とOUT命令は何に使われるのですか?