WikiDer > Opcode
EIN Opcode (eine Abkürzung von Betriebscode) ist ein Teil von a Anweisung zu einer Computer angibt, welche Operation ausgeführt werden soll.
Eine von einem Computer ausgeführte Anweisung besteht normalerweise aus zwei Teilen: dem Opcode und den Operanden. Es gibt zwei Arten von Opcodes: im Maschinensprache und in der Assemblersprache. Seien Sie der Letzte mnemonische Opcodes erwähnt.
Wenn die Anweisung beispielsweise lautet, dass fünf hinzugefügt werden müssen, um EBX zu registrieren, dann:
- opcode: 'zu einem Register hinzufügen'
- Operanden: 'EBX' und '5'
Der Maschinencode (für i86) dieser Anweisung ist 83C305. Der Opcode ist 83C, das Register EBX ist mit 3 bezeichnet und der hinzuzufügende Wert ist 05.
Die Montageanleitung lautet:
EBX HINZUFÜGEN,5
Hier ist ADD der mnemonische Opcode.
Im angegebenen Beispiel stimmen die Opcodes nicht genau überein. Der mnemonische Opcode 'ADD' zeigt, dass Zusätze gemacht werden müssen, aber nicht, dass Zusätze zu einem Register gemacht werden müssen. Dies ist nur aus dem Operanden 'EBX' ersichtlich. Es gibt Assemblersprachen, bei denen eine direkte Eins-zu-eins-Beziehung zwischen dem Opcode in der Maschinensprache und dem mnemonischen Opcode besteht. Zum Beispiel die Assemblersprache der IBM 360 Unterscheidung zwischen den mnemonischen Opcodes 'A' (Add value in memory) und 'AR' (Add value from register). Die Montageanleitung lautet:
A 4.8 Addieren Sie den Inhalt von Adresse 8 zu Register 4AR 4.8 Addieren Sie den Inhalt von Register 8 zu Register 4
Undokumentierte Opcodes
Der Hersteller eines Computers oder Prozessors gibt eine Dokumentation heraus, die die Opcodes beschreibt, damit Software entwickelt werden kann. Nun wird es fast immer Bitkombinationen geben, die nicht beschrieben sind. Normalerweise schweigt der Hersteller darüber, oder er beschreibt undokumentierte Opcodes mit Worten wie „reserviert“ oder „unvorhersehbares Verhalten“. Es ist auch möglich, dass ein undokumentierter Opcode einen dokumentierten unterbrechen Ursachen.
Natürlich wird es immer Leute geben, die diese undokumentierten Opcodes ausprobieren. Manchmal stellt sich heraus, dass sie dasselbe tun wie ein anderer, gut dokumentierter Opcode. Dies liegt in der Regel daran, dass die Elektronik des Prozessors so einfach wie möglich gehalten wurde. Es kommt auch vor, dass ein undokumentierter Opcode eine sehr nützliche Operation ausführt, aber der Hersteller hat sich entschieden, diese Möglichkeit nicht zu veröffentlichen.
Einige Softwareentwickler verwenden die undokumentierten Opcodes, um zerlegen oder um nachweisen zu können, dass ein Programm mit ihrem Paket entwickelt wurde.
Es ist etwas riskant, einen undokumentierten Opcode zu verwenden, da der Prozessorhersteller nicht garantiert, dass eine nachfolgende Version des Prozessors diesen Opcode ausführen kann. Auf der anderen Seite wird sich der Hersteller bemühen, auch die undokumentierten Opcodes in die neue Version aufzunehmen, denn er weiß, dass ihm die Schuld gegeben wird, wenn ein Programm auf dem neuen Prozessor plötzlich nicht mehr funktioniert.
Eine berühmte undokumentierte Anweisung ist ALLE LADEN. Diese Anleitung finden Sie im 80286 und der 80386 - nicht in späteren Prozessoren. Die Opcodes sind nicht gleich: beim 80286 ist es 0F05 und beim 80386 0F07, und das Verhalten ist auch nicht gleich. Diese komplizierte Anweisung war durch die Untersuchung des Prozessorverhaltens kaum zu entdecken und wurde bekannt, weil ein Dokument von Intel ist durchgesickert. Die Anweisung war zum Testen des Prozessors gedacht, erwies sich aber als sehr nützlich, um den gesamten Speicher im laufenden Betrieb zu adressieren. echte Mode Stand. Die Anweisung wurde daher in vielen kommerziellen Softwareanwendungen angewendet.