Von Neumann architectureでは、プログラムとデータの両方がメモリに格納されているため、プログラム自体を修正することができます。これはプログラマーにとって便利ですか?いくつか例を挙げていただけますか?自己変更コードの使用例
答えて
これは、同様の(非常によく書かれたと答えた)質問への答えをStackOverflow-Homoiconic and "unrestricted" self modifying code + Is lisp really self modifying?でも参照することによって、これに最もよく答えることができます。その答えは、 "コードはデータ"を次のレベルに引き上げるために知られているファミリー言語であるLispに焦点を当て、AIでその使用法を探求しています。私の心に来る
LISPはAIに関するものではありません。 –
Niklas、自然にLISPはAIよりはるかにですが、LISPの自己修正コードは、パフォーマンスがそれほど重要ではない(ただし、これらのareansは縮小しています) –
変成作用
ワン(疑わしい)ユースケースはmetamorphic computer virusesです。これらは、signature based detectionから自分自身のマシンコードを意味的に同等の表現に書き換えることによって、と見えるが異なると思われる悪意のあるソフトウェアです。
トランポリン
別の(より複雑でなく、より一般的には)ケースを使用し、ネストされた関数呼び出しと特定の問題を解決するために、動的コード生成に基づく技術trampoliningあります。
JITコンパイル
私は考えることができる動的なコード生成の最も一般的な使用法はJIT (just-in-time) compilationです。 .NETやJavaのような現代の言語は、ネイティブのマシンコードにコンパイルされるのではなく、ある種の中間言語(バイトコードと呼ばれます)にコンパイルされます。このバイトコードは、プログラムの実行時に(ターゲットアーキテクチャ用に記述された仮想マシンによって)解釈されます。同時に、バックグラウンドプロセスは、コードのどの部分が非常に頻繁に実行されるかをチェックします。これらの部分は、パフォーマンスを最大限に高めるために、ネイティブの機械語に動的にコンパイルされる可能性が高くなります。これはすべて、プログラムの実行中に発生します!
セキュリティへの影響
心に留めておくべき一つのことは、最新のハードウェアとオペレーティングシステムの傾向がであることが理由である、コードなどのデータを解釈する可能性がコンピュータソフトウェアのセキュリティホールを悪用するために有用であるということです可能であれば、コードとデータの分離を実行することもできます(NX bitとDEPも参照してください)。
- 1. Asio:例での自己共有ポインタの使用
- 2. 自己更新アプリ
- 3. Javaで自己修正コード
- 4. 自己修正C#(MSIL)コード?
- 5. 自己完了コードが
- 6. ruby on railのデータベースフィールド更新で自己を使用する
- 7. 自己更新.net CFアプリケーション
- 8. 更新と自己参加
- 9. Androidのネイティブの自己修正コード
- 10. トレースフックの自己修正コードですか?
- 11. 財産上の自己:同じコードのあるまたは自己無し
- 12. 静的変数と自己キーワードを使用する場合
- 13. スーパーのショートカット(タイプ(自己)、自己)
- 14. Javaの自己検査プログラム(自己チェックサム)
- 15. 自己更新Pythonスクリプトの再起動
- 16. 自己リダイレクトし、asp.net mvcでパラメータを変更する方法?
- 17. QueryPathはiframeタグを自己クローズに変更しますか?
- 18. 自己参照汎用型
- 19. C++自己ミステリーに自己を渡す
- 20. パイソン:自己.__ class__対タイプ(自己)
- 21. コード契約の例外使用例
- 22. お知らせ:未定義の定数自己の使用 - 「自己」と想定、最初の引数
- 23. MySql。自己登録の使い方
- 24. SQL Serverの自己
- 25. Facebookの自己vCard
- 26. SecureRandomの自己シード
- 27. 自己リファレンス
- 28. クロームスクロールで自己
- 29. CakePHP自己リフレッシュデータベースエントリスクリプト
- 30. 自己オープンソースプログラム
これはコンピュータアーキテクチャー上の問題であるため、簡単な例がありますか? TanenbaumによるStructured Computer Organizationの本を参照してください(第1章の問題とヒント:配列の算術について考えること) – gylns
あなたの質問から、これを推測することはおそらく期待できません。また、私はその本を所有していません。 –