| dbpprop:abstract
|
- In computer science, self-modifying code is code that alters its own instructions while it is executing - usually to reduce the instruction path length and improve performance or simply to reduce otherwise repetitively similar code thus simplify maintenance. Self modification is an alternative to the method of 'flag setting' and conditional program branching, used primarily to reduce the number of times a condition needs to be tested for. The method is frequently used for conditionally invoking test/debugging code without requiring additional overhead for every input/output cycle and also in just-in-time (JIT) compilers. The modifications may be performed:- only during initialization - based on input parameters (when the process is more commonly described as software 'configuration' and is somewhat analagous, in hardware terms, to setting jumpers for printed circuit boards). Alteration of program entry pointers is an equivalent indirect method of self-modification, but requiring the co-existence of one or more alternative instruction paths, increasing the program size. throughout execution ('on-the-fly') - based on particular program states that have been reached during the execution In either case, the modifications may be performed directly to the machine code instructions themselves, by overlaying new instructions over the existing ones .
- Mit der Bezeichnung Selbstmodifizierender Code wird ein Abschnitt eines Computerprogramms bezeichnet, das zur Lösung der Programmaufgabe Teile des eigenen Programmcodes während der Ausführung gezielt verändert. Unter der Bezeichnung „freier Rechenplan“ hatte schon Konrad Zuse selbstmodifizierenden Code als Möglichkeit in die von ihm entworfene Programmiersprache Plankalkül aufgenommen. Das Programm muss dabei in der Lage sein, im Maschinencode bestimmte Befehle durch sinnvolle andere Maschinenbefehle zu ersetzen. Selbstmodifizierender Code kann da verwendet werden, wo es möglich ist, mehrere, nur an wenigen Stellen unterschiedliche Programmteile zu einem einzigen zusammenzufassen. Die Methode, Code sich selbst modifizieren zu lassen, stammt hauptsächlich aus einer Zeit, in der Ressourcen (CPU-Zeit, Speicher) noch sehr knappe Güter waren – es wurde also oftmals eine Optimierung des Laufzeitverhaltens oder Speicherverbrauchs angestrebt. Beides ist mittlerweile nur noch äußerst selten notwendig (z. B. beim „Retro computing“, wenn also auf sehr alten Systemen programmiert wird). Ein anderer Grund zur Selbstmodifikation waren Kopierschutzverfahren. In Anbetracht der historischen Motivationen zum Schreiben von selbstmodifizierendem Code sollte das Vorhandensein von solchem Code nicht alleine nach modernen Maßstäben zur Bemessung von Codequalität bewertet werden, sondern auch immer die (historischen und/oder technischen) Umstände berücksichtigt werden. Die Veränderung des Programmcodes ist nur in einer Von-Neumann-Architektur möglich, wo Programm und Daten denselben Adressraum teilen. In Prozessoren mit Harvard-Architektur ist das Modifizieren von Programmcode während der Laufzeit nicht vorgesehen, und da ein normales Programm keinen Compiler enthält, muss die Modifikation direkt in Maschinensprache ausgeführt werden. Aus diesen beiden Gründen ist eine Portierung von selbstmodifizierendem Code auf einen beliebigen Prozessor fast nicht möglich. Der selbstmodifizierende Code eines Programms hat nichts mit Lernen oder der Verbesserung eines Programmes zu tun. Selbstmodifizierende Programme, die die Hochsprache des Programms modifizieren, sind in der Zukunft möglicherweise hilfreich, die Maschinenintelligenz zu steigern.
- En informática, el término código mutante o código ambiguo se emplea para referirse a un código cuya integridad es modificada por sí mismo durante su ejecución, generalmente este código trata de un malware por el hecho de que si como algoritmo (cuando es ejecutado) se automodifica como información (donde está almacenado) fácilmente puede engañar a un programa del tipo antivirus o similar.
- La programmazione di codice automodificante è una particolare tecnica di programmazione volta a realizzare programmi in grado di modificare il proprio codice durante l'esecuzione. Per la complessità dell'analisi relativa a tali algoritmi, è una tecnica sconsigliata per quasi tutte le applicazioni: allo stato attuale solo i virus, i programmi di intelligenza artificiale ed alcuni algoritmi di protezione del software fanno uso di codice automodificante. I virus lo fanno per cercare di sfuggire all'analisi dei programmi antivirus, mentre in IA serve per simulare (o per alcuni imitare) l'apprendimento. Infine gli algoritmi di protezione del software usano il codice automodificante per rendere difficoltosa la realizzazione di "crack" in grado di sproteggere il software stesso. Normalmente il codice automodificante viene scritto nel linguaggio nativo del processore su cui deve girare, tuttavia è possibile, con opportuni accorgimenti, scrivere codice automodificante con linguaggio di alto livello. In origine i programmi automodificanti erano realizzati per ottenere il massimo delle prestazioni dalle macchine, ma con i moderni microprocessori ciò non è più vero, anzi spesso ottengono il risultato opposto: un moderno processore può venire rallentato dal codice automodificante. Attualmente l'utilizzo della tecnica del codice automodificante viene sconsigliata da tutti i produttori di microprocessori poiché rende notevolmente più complessa la realizzazione degli stessi microprocessori. I microprocessori moderni suddividono le istruzioni e i dati in due aree separate di memoria. Il codice automodificate non è dotato di questa netta suddivisione dato che utilizza i dati per adattare il proprio codice e questo rende la sua gestione in un processore moderno molto difficile. Intel e AMD attualmente supportano l'esecuzione di codice automodificante sui loro prodotti della linea x86. Questo supporto è mantenuto per questioni di compatibilità con le precedenti applicazioni.
- 自己書き換えコード(じこかきかえコード、self-modifying code)とは、目的を問わず実行時に自分自身の命令を書き換えるコードを指す。 自己書き換えコードはアセンブリ言語を使うと簡単に記述できる(CPUのキャッシュを考慮する必要がある)。 また、SNOBOL4やLISPのようなインタプリタ型の高級言語でもサポートされている。また、COBOLには ALTER という命令があった。 コンパイラで実装するのは難しいが、CLIPPERとSPITBOLはそれを試みている。 バッチスクリプトも自己書き換えコードをよく使う。 Reconfigurable computing は、言ってみれば「自己書き換えハードウェア」である。 Reconfigurable computing はソフトウェアとハードウェアの境界をぼやけさせる。
- Самомодифицирующийся код (полиморфизм) — программный приём, при котором приложение создаёт или изменяет часть своего программного кода во время выполнения. Такой код обычно применяют в программах, написанных под процессор с фон-неймановской организацией памяти.
|
| rdfs:comment
|
- In computer science, self-modifying code is code that alters its own instructions while it is executing - usually to reduce the instruction path length and improve performance or simply to reduce otherwise repetitively similar code thus simplify maintenance. Self modification is an alternative to the method of 'flag setting' and conditional program branching, used primarily to reduce the number of times a condition needs to be tested for.
- Mit der Bezeichnung Selbstmodifizierender Code wird ein Abschnitt eines Computerprogramms bezeichnet, das zur Lösung der Programmaufgabe Teile des eigenen Programmcodes während der Ausführung gezielt verändert. Unter der Bezeichnung „freier Rechenplan“ hatte schon Konrad Zuse selbstmodifizierenden Code als Möglichkeit in die von ihm entworfene Programmiersprache Plankalkül aufgenommen.
- En informática, el término código mutante o código ambiguo se emplea para referirse a un código cuya integridad es modificada por sí mismo durante su ejecución, generalmente este código trata de un malware por el hecho de que si como algoritmo (cuando es ejecutado) se automodifica como información (donde está almacenado) fácilmente puede engañar a un programa del tipo antivirus o similar.
- La programmazione di codice automodificante è una particolare tecnica di programmazione volta a realizzare programmi in grado di modificare il proprio codice durante l'esecuzione. Per la complessità dell'analisi relativa a tali algoritmi, è una tecnica sconsigliata per quasi tutte le applicazioni: allo stato attuale solo i virus, i programmi di intelligenza artificiale ed alcuni algoritmi di protezione del software fanno uso di codice automodificante.
- Самомодифицирующийся код (полиморфизм) — программный приём, при котором приложение создаёт или изменяет часть своего программного кода во время выполнения. Такой код обычно применяют в программах, написанных под процессор с фон-неймановской организацией памяти.
|