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. HTA自己変更コード?
- 2. 自己更新コード?
- 3. TimePicker変更時間自己
- 4. HeightOfRow内での自己サイズ変更の使用
- 5. インスタンスクロージャ変数での自己使用
- 6. Asio:例での自己共有ポインタの使用
- 7. 自己更新アプリ
- 8. Javaで自己修正コード
- 9. 自己完了コードが
- 10. 自己修正C#(MSIL)コード?
- 11. ruby on railのデータベースフィールド更新で自己を使用する
- 12. 自己使用時の属性エラー
- 13. Androidのネイティブの自己修正コード
- 14. gplot2のbiplotの自己記述コード
- 15. 自己更新.net CFアプリケーション
- 16. "php composer.phar自己更新"ハングビルド
- 17. Ionic 3 App自己更新
- 18. Tkinterラベル自己更新
- 19. エラーメッセージAjax、自己更新フィールド
- 20. 更新と自己参加
- 21. TOPと自己結合を使用した更新
- 22. Oracle - 自己結合を使用して列を更新する
- 23. トレースフックの自己修正コードですか?
- 24. JSon例外自己参照ループ
- 25. 財産上の自己:同じコードのあるまたは自己無し
- 26. (assertRaises()を使用して)自己定義例外の発生をテスト中のエラー
- 27. 自己参照「直接自己参照サイクルにつながる」例外
- 28. 静的変数と自己キーワードを使用する場合
- 29. python IDLEデバッガ自己変数
- 30. 自己署名証明書自己ホストGitLabを使用したSSLエラー
これはコンピュータアーキテクチャー上の問題であるため、簡単な例がありますか? TanenbaumによるStructured Computer Organizationの本を参照してください(第1章の問題とヒント:配列の算術について考えること) – gylns
あなたの質問から、これを推測することはおそらく期待できません。また、私はその本を所有していません。 –