Différence entre: Opcode, byte-code mnémonique, le code machine et de l'assemblée
Je suis tout à fait nouveau pour cette. J'ai essayé de comprendre la différence entre l'une des conditions mentionnées de façon claire, cependant, je suis encore confus. Voici ce que j'ai trouvé:
-
En assembleur d'ordinateur (ou assemblée) de la langue, un mnémonique est une abréviation pour une opération. Il est entré dans le code d'opération de terrain de chaque programme en assembleur instruction. par exemple
AND AC,37
qui signifieAND
laAC
registre avec37
. doncAND
,SUB
etMUL
sont mnémonique. Ils sont traduites par l'assembleur. -
Instructions (instructions) en langage d'assemblage sont généralement très simple, à la différence de celles de haut niveau dans les langages de programmation. Généralement, un mnémonique est un nom symbolique pour un seul exécutable de la machine de l'enseignement de la langue (un opcode), et il existe au moins un opcode mnémonique définis pour chaque machine de l'enseignement de la langue. Chaque instruction se compose généralement d'une opération ou de l'opcode, plus zéro ou plusieurs opérandes.
Vous devez vous connecter pour publier un commentaire.
OPCODE: C'est un nombre interprété par votre machine(virtuelle ou de silicium) qui représente l'opération à effectuer
BYTECODE: le Même que le code machine, à l'exception, surtout utilisé par un logiciel basé interprète(comme le Java ou le CLR)
MNÉMONIQUE: mot anglais MNÉMONIQUE signifie "d'un appareil comme Un modèle de lettres, des idées, ou des associations qui aide à se souvenir de quelque chose.". Donc, habituellement utilisées par l'assemblée de la langue programmeurs de se rappeler les "OPÉRATIONS" une machine peut le faire, comme "AJOUTER" et "MUL" et "MOV", etc. C'est de l'assembleur spécifique.
CODE MACHINE: Il s'agit de la séquence de nombres que retourner les interrupteurs à l'ordinateur et à l'extérieur pour effectuer un certain travail de travail, telles que l'addition de nombres, de branchement, de multiplication, etc etc. C'est purement spécifique à l'appareil et bien documentée par les responsables de l'implémentation du processeur.
Assemblée: Il y a deux "ensembles" - une assemblée programme est une séquence de mnémoniques et des opérandes qui sont nourris à un "assembleur" qui "rassemble" les mnémoniques et les opérandes en code machine exécutable. En option, un "éditeur de liens" des liens assemblées et produit un fichier exécutable.
la deuxième assemblée" dans "CLR" les langages(.NET languages) est une séquence de code CLR infusé avec des informations de métadonnées, une sorte de bibliothèque de code exécutable, mais pas directement exécutable.
Aniket fait du bon boulot, mais je vais avoir un aller trop.
Tout d'abord, comprendre que, au niveau le plus bas, les programmes d'ordinateur et toutes les données sont seulement des nombres (parfois appelé mots), en mémoire d'une certaine sorte. Le plus souvent ces mots sont des multiples de 8 bits (1 et 0) (32 et 64), mais pas nécessairement, et dans certains processeurs, chaque mot est considérablement plus grande. Peu importe si, c'est juste des nombres représentés sous la forme d'une série de 1 et de 0, ou on et off si vous le souhaitez. Que signifient les chiffres jusqu'à ce que/qui-n'est jamais à les lire, et dans le processeur, il lit la mémoire un mot à la fois, et sur la base du nombre (d'instruction), il voit, prend un peu d'action. De telles mesures pourraient inclure la lecture d'une valeur à partir de la mémoire, l'écriture d'une valeur dans la mémoire, de la modification d'une valeur qu'elle avait lu, en sautant à un autre endroit dans la mémoire de lire les instructions du.
Dans les tout premiers jours d'un programmeur serait littéralement flick s'allume et s'éteint à apporter des modifications à la mémoire, avec des lumières ou de désactiver la lecture de la 1 et de 0, car il n'y avait pas de claviers, écrans et ainsi de suite. Au fil du temps, de la mémoire sont devenus plus grands, les processeurs sont devenus plus complexes, des dispositifs d'affichage et le clavier pour la saisie ont été conçus, et avec des moyens plus faciles à programmer.
Paraphrasant M.:
L'OPCODE est partie d'une instruction mot qui est interprétée par le processeur comme représentant l'opération à effectuer, telles que lire, écrire, sauter, ajouter. De nombreuses instructions auront également des OPÉRANDES qui affectent la façon dont l'instruction effectue, en disant par exemple d'où dans la mémoire à lire ou à écrire, ou où à sauter. Donc, si les instructions sont en 32 bits par exemple, un processeur peut utiliser 8 bits pour l'opcode, et 12 bits pour chacun des deux opérandes.
Une étape de basculement des commutateurs, le code peut être entré dans une machine à l'aide d'un programme appelé "moniteur". Le programmeur aurait utilisez des commandes simples-à-dire que la mémoire qu'ils veulent modifier, puis entrez le CODE MACHINE numériquement, par exemple, en base 16 (hexadécimal) à l'aide de 0 à 9 et A à F pour les chiffres.
Bien mieux que le basculement de commutateurs, entrer le code machine est encore lente et sujette à erreurs. Un cran au dessus de qui est l'ASSEMBLÉE du CODE, qui utilise le plus facile à se rappeler MNÉMONIQUES à la place du nombre réel qui représente une instruction. Le travail de l'ASSEMBLEUR est principalement à transformer le mnémonique du programme correspondant du code machine. Cela rend la programmation plus facile, en particulier pour les instructions de saut, où une partie de l'instruction est une adresse de mémoire à sauter ou un certain nombre de mots à ignorer. La programmation en code machine exige d'énormes calculs de formuler l'instruction correcte, et si peu de code est ajouté ou supprimé, les instructions de saut peut-être besoin d'être recalculé. L'assembleur gère cela pour le programmeur.
Cela laisse BYTECODE, qui est fondamentalement le même que le code machine, en ce qu'il décrit le faible niveau des opérations telles que la lecture et l'écriture de la mémoire, et les calculs de base. Le Bytecode est généralement conçu pour être produit lors de la COMPILATION d'un langage de plus haut niveau, par exemple de PHP ou de Java, et à la différence du code machine pour de nombreux matériels basés sur les processeurs, peut avoir des activités à l'appui des caractéristiques spécifiques de la langue de niveau supérieur. Une différence essentielle est que le processeur de bytecode est généralement un programme, bien que les processeurs ont été créés pour l'interprétation de certains bytecode spécifications, par exemple, d'un processeur appelé SOAR (Smalltalk Sur UN RISC) pour Smalltalk bytecode. Alors que vous ne seriez pas généralement appel code machine natif du bytecode, pour certains types de processeurs comme le SCRC et la CÉRE (par exemple, Linn Rekursiv, de personnes qui ont fait enregistrer des joueurs), le processeur lui-même contient un programme qui interprète les instructions machine, donc il y a des parallèles.
La ligne suivante est démonté x86 code.
68 est le opcode. Avec le suivant pour les octets qu'il représente POUSSER instruction de x86 Assemblée langue. Instruction PUSH pousse de 4 octets (32 bits) longueur des données de la pile. Le mot PUSH est juste un mnémonique qui représente opcode 68. Chacun des octets 68, 73, 9D, 00, 01 est code machine.
les codes de machine sont de vraies machines (Cpu) mais octets de codes sont des pseudo-codes machine pour des machines virtuelles.
Lorsque vous écrivez du code java. java compilateur compile le code et génère du byte-codes. (Un .fichier de classe) et vous pouvez exécuter le même code à n'importe quel plate-forme sans changer.
68
est seulement un de les opcodes qui x86push
peuvent se regrouper pour. C'estpush imm32
. Il y a d'autres opcodes pourpush register
(avec le numéro de registre dans le cadre de l'opcode octet), et pourpush imm8
, etpush r/m
(adressage via un modr/m octets)."Assemblée", provient de la très début de code "assembleurs", qui serait "d'assembler" des programmes à partir de plusieurs fichiers (ce que nous appelons aujourd'hui "include" fichiers). (Veuillez noter toutefois que les "fichiers" étaient souvent des jeux de cartes.) L'utilisation du terme "langage d'assemblage" pour se référer à une représentation mnémonique du code est un back-formation de "assembleur", et quelque peu imprécise, puisqu'un certain nombre de "assembleurs" ne prennent pas en charge les fichiers include et donc de ne pas "d'assembler".
Il est intéressant de noter que les "assembleurs", ont été inventé pour "sous-programmes". À l'origine, il y avait des "interne" et "externe" des sous-routines. "Internes" sous-programmes ont été ce que nous appelons aujourd'hui "inline", alors que "externes" ont été atteint par une primitive "appel" mécanisme. Il y avait beaucoup de controverse à ce moment-là que "externe" sous-programmes ont été une bonne idée ou pas.
"Mnémonique" vient du nom du dieu grec Mnémosyne, la déesse de la mémoire. Tout ce qui vous aide à vous rappeler des choses est un "pense-bête".
Récemment j'ai lu un bon article sur ce, Différence entre Opcode et de Bytecode, donc à partager avec celui qui est, après une bonne explication sur ce sujet. Tout le crédit va à l'auteur original.
Opcode:
Opcode est l'abréviation de code de l'opération. Comme son nom l'indique, l'opcode est un type de code qui indique à la machine quoi faire, c'est à dire ce que l'opération à effectuer. Opcode est un type de machine de l'enseignement de la langue.
Bytecode:
Bytecode
est similaire àopcode
dans la nature, comme il le dit aussi à ce que la machine à faire. Cependant,bytecode
n'est pas conçu pour être exécuté par le processeur directement, mais plutôt par un autre programme.Il est le plus couramment utilisé par un logiciel basé interprète comme Java ou CLR. Ils convertissent chaque généralisée instruction machine dans un spécifiques machine d'instruction ou les instructions de sorte que le processeur de l'ordinateur peut comprendre.
En fait, le nom
bytecode
vient de jeux d'instructions qui ont un octet opcodes suivi par des paramètres optionnels.