Comment binaires de traduire le matériel?
Je comprends comment le code est compilé à l'assemblée, et que l'assemblée est un 1:1
de remplacement avec des codes binaires. Quelqu'un peut-il m'aider à comprendre comment binaire est connecté au matériel? Comment est le binaire physiquement lire et exécuter? Comment un si la déclaration de travaux sur le matériel?
De les recherches google je pense que peut-être ma question titre devrait être "comment des données binaires mettre sur une ligne de bus" mais je n'étais pas sûr.
Grâce.
- Il y a des cours complets qui traitent de ce sujet. Quand j'ai pris des Microprocesseurs dans mes EE études, nous avons conçu un processeur 8 bits, mais il était de 14 semaines de notes à la fin. Donc, votre meilleur pari, si vous voulez vraiment comprendre, est de prendre un EE, ce qui signifie que vous avez à maîtriser la logique de conception d'abord, que les multiplexeurs sont énormément utilisés dans le présent. Et maintenant, avec le pipelining, il devient beaucoup plus compliqué. De comprendre que vous aurez besoin de prendre un cours d'Architecture des ordinateurs.
- La réponse à cette minuscule facette de ce sujet -- "comment est-ce des données binaires mis sur la ligne de bus" - peut être trouvé dans Ulrich Drepper du papier: people.redhat.com/drepper/cpumemory.pdf
- "Code binaire" est un sujet plus général que vous vous posez à propos de; au lieu de cela, essayez de recherche pour "langage machine". La compilation de l'assemblée en code machine n'est pas nécessairement un rapport de 1:1, même sans optimisation.
- Tandis que le CS programmes ont d'abord utilisé l'Ordinateur de l'Organisation et de la Conception par Patterson et Hennessy, je vous recommande fortement de travailler à travers des Éléments de Systèmes Informatiques. Toutes les réponses se trouvent à l'intérieur!
- Connexes Comment fonctionne une instruction d'assemblage tourner en variations de tension sur le CPU?
InformationsquelleAutor Nona Urbiz | 2009-10-05
Vous devez vous connecter pour publier un commentaire.
Je pense que c'est effectivement un plaisir question. Je dirais "voici comment construire un ordinateur en quelques étapes faciles".
Commencer avec quelques simples circuits logiques, tels que ET, OU, NON, et un flip-flop. Un flip-flop est une paire de transistors de sorte que si l'un est, l'autre est ÉTEINT, ou vice-versa. De cette façon, il peut se "souvenir" d'un bit d'information, de sorte que vous pouvez le penser comme un stockage d'un seul chiffre binaire. Quelques lignes d'entrée peut le mettre dans l'un ou l'autre etat, et donc "écrire" à elle.
Vous pouvez stocker un plus grand nombre en ayant un tas de flip-flops, et de l'appeler un "registre". Par exemple, si vous avez quatre flip-flops dans un registre, il y a 16 combinaisons possibles, de sorte que vous pouvez pensez que la tenue d'un nombre de 0 à 15.
D'avancer un peu, vous pouvez acheter une "puce de mémoire". Ce qui est un bon nombre de registres, comme, disons, 16 d'entre eux. Il a 4 fils (les "adresse" fils), et il a 4 fils (les "données" fils). Ainsi, un nombre de 0 à 15 peut venir comme une adresse, et qui permet de sélectionner l'un des 16 registres, dont la valeur est présentée sur les données de sortie des fils (donc la "lecture" d'elle). Un autre quelques fils peut entraîner des données les données des fils à cause des numéros à mettre en ("écrite") le registre.
Maintenant, supposons que vous avez un externe 4 bits de registre (appelons-R), et un peu de circuit, de sorte qu'il
Selon les chiffres qui ont été pré-chargé dans la mémoire, vous pouvez voir que cette chose n'cycle à travers une série d'adresses numériques, parce que le nombre à chaque adresse détermine ce qui l'adresse suivante sera.
Maintenant, vous pouvez agrémenter cette chose dans beaucoup de façons. Vous pouvez étendre la mémoire à avoir de 5 bits d'adresse (32 registres). Alors si l'une des lignes d'adresse est connecté au monde extérieur, il va faire des choses différentes en fonction sur le monde extérieur. C'est un "finite-state-machine".
Vous pouvez remplacer le registre R avec un simple compteur, et de l'appeler un "compteur de programme". Vous pouvez prendre les données provenant de la mémoire et de l'appeler une "instruction", et d'utiliser certaines de ses bits à lire les autres adresses de la mémoire et de la charge d'un ensemble de l'arithmétique des registres. Vous pouvez utiliser certaines de contrôler si le registre R simplement incréments, ou peut-être obtient une nouvelle adresse qui y est stockée. Cela s'appelle un "saut".
Bien sûr, c'est très simple ordinateur, mais c'est à peu près la façon dont ils ont commencé.
Une réponse complète à votre question comprendrait un livre, et un assez épais qui plus est.
Quand vous dites "code", je suppose que vous faites allusion à un haut niveau de langage compilé comme le C++. Généralement, un compilateur traduit ce code en langage machine, ou binaire comme vous le dites dans votre question. Nous allons soigneusement éviter toute discussion des tablespaces gérés de code non managé, p-code, etc. Qui est, nous sommes juste de parler de compilateurs qui cible spécifique de transformation des systèmes d'exploitation. Java, par exemple, rassemble en une pseudo-code appelé bytecode. Nous allons également à éviter l'ensemble de la question de l'édition de liens, ou de la liaison, qui est la façon dont plusieurs modules de code source compilé en langage machine liés ensemble dans un seul exécutable du programme.
Bon, maintenant que nous avons couvert la plupart de ce que nous n'allons pas couvrir, voici ce qui arrive habituellement. Et par "habitude", je veux dire la plupart des langages compilés dans un DOS, Linux ou Windows. Le code source est traduit en langage machine, ce qui est écrit dans un fichier exécutable. Ce fichier exécutable contient, plus ou moins, une image de ce que le programme devrait ressembler à la mémoire. Quand vous dites que le système d'exploitation pour exécuter votre programme, l'OS, l'équivalent d'un "Load and Go" s'exécute. Ce que cela signifie, c'est que la mémoire d'image dans le fichier exécutable est chargé en mémoire, le système d'exploitation n'est un langage machine SAUTER à la première instruction du programme. Le CPU puis suit aveuglément les instructions à partir de ce point, jusqu'à ce que la SORTIE est rencontré.
Ce SAUT... la SORTIE de la malveillance est une simplification drastique pour le système d'exploitation moderne de l'. Comme vous pouvez l'imaginer, si le CPU ont suivi, avec l'obéissance aveugle, les instructions dans un programme qui s'égare, l'ordinateur se plante... ou pire. Tel a été le sort de beaucoup de gens, un errant programme dans les premiers jours, et un premier contributeur à de nombreux BSOD.
C'est un grand, très sujet compliqué. Le meilleur des manuels que j'ai vu sur le sujet est Patterson/Hennesy "l'Organisation de l'Ordinateur et du Design", qui a de nombreuses éditions.
Autres que vous suggère de le lire, je n'ose pas essayer de caser une durée d'un semestre de la classe dans un 500 caractères réponse de la boîte.
Il y a un Livre appelé code qui va au-dessus aussi bien que n'importe quel ordinateur de l'organisation du texte. Thogh les réponses ici sont tous bons.
Je ne vois pas ce qu'énorme et compliquée, la plus proche du matériel le plus simple c'est.
Écrire un désassembleur, c'est la façon dont le matériel est-il. La plupart des processeurs inclure les opcodes ou du jeu d'instructions dans le même manuel que le langage assembleur.
Regarder l'opcode pour dire un complément d'instruction à l'aide de registres, quelques-uns des bits de déterminer la source de registre, quelques bits de registre de destination quelques bits de dire que c'est un complément d'instruction. Disons que ce jeu d'instructions vous êtes à la recherche à n'utilise que deux registres, un registre basé sur ajouter. Il y a une logique, une vipère, que pouvez ajouter deux éléments la taille des registres et la sortie d'un résultat et un bit de retenue. Les registres sont stockées sur une puce de mémoire bits parfois appelé flip flops. Ainsi, lors d'un ajout est décodé à l'entrée des registres sont à égalité pour le complément logique à l'aide de commutateurs électroniques. Ces jours-ce qui se passe au début du cycle d'horloge, à la fin du cycle d'horloge, l'additionneur a un résultat et la sortie est acheminée vers les bits du registre de destination et la réponse est capturé. Normalement un complément permettra de modifier les indicateurs de l'indicateur inscrire. Lorsque le résultat est trop grand pour être stockées dans le registre (pensez à ce qui se passe lorsque vous ajoutez le nombre de décimales, 9 et 1, vous obtenez un 0 de transporter de la 1 à droite?). Il y a une logique qui ressemble à la sortie de l'additionneur et compare les bits ayant la valeur zéro qui définit ou supprime le z drapeau le drapeau de vous inscrire. Un autre drapeau bit est le bit de signe ou de n bits pour le négatif, c'est le bit le plus significatif de la réponse. Cela est fait en parallèle.
Puis dire à votre prochaine instruction est de sauter si zéro (sauter en cas d'égalité), la logique semble à la z drapeau. Si définie, alors la prochaine instruction extraite est basé sur les bits de l'instruction qui sont ajoutés au compteur de programme, par le biais de la même ou d'une autre additionneur. Ou peut-être les bits de l'instruction pointer vers une adresse en mémoire qui tiennent à la nouvelle valeur du compteur de programme. Ou peut-être la condition est fausse, alors le compteur de programme est toujours exécutée par le biais d'un additionneur mais ce qui est ajouté à la taille de l'instruction afin qu'il récupère la prochaine instruction.
Le tronçon à partir d'un désassembleur pour un simulateur n'est pas long. Vous faites des variables pour chacun des registres, de décoder les instructions, exécuter les instructions, continuer. La mémoire est une matrice de vous lire ou écrire. Le désassembleur est votre décoder étape. Le simulateur effectue les mêmes étapes que pour le matériel, le matériel est-il en parallèle en utilisant différentes astuces de programmation et des langages de programmation différents.
Selon comment la mise en œuvre de votre désassembleur pourrait commencer au début du programme et à démonter à la fin, votre simulateur serait de commencer au début, mais de suivre l'exécution du code qui n'est pas nécessairement début à la fin.
Vieille console de jeu simulateurs comme MAME avez processeur simulateurs que vous pouvez regarder. Malheureusement, esp avec MAME, le code est conçu pour la vitesse d'exécution pas la lisibilité et la plupart sont complètement illisibles. Il y a quelques lisible simulateurs de là-bas si vous regardez bien.
Un ami m'a signalé à ce livre http://www1.idc.ac.il/tecs/ que je voudrais lire, mais n'avez pas encore. Peut-être que c'est juste le livre que vous cherchez.
Assurer que le matériel a évolué à partir de trivial de l'état des machines qui prennent de nombreuses montres de fetch, decode, et de l'exécuter en série. Ma conjecture est que si vous avez juste entendu le classique fetch, decode, et d'exécuter, c'est assez pour cette question. Ensuite, vous pouvez avoir d'autres questions plus spécifiques, ou peut-être que j'ai mal compris la question et vous avez vraiment envie de comprendre le bus mémoire et de ne pas le décodeur.
Cela semble comme une " façon de faire des ordinateurs question, mais vous n'êtes pas susceptibles d'être satisfaits par les réponses que vous obtenez à partir de Google.
Les détails de façon binaire est "connecté" à le matériel est vraiment le sujet de la conception par ordinateur, à un niveau de base. Une certaine connaissance de la conception du matériel est très utile pour les programmeurs, mais pas strictement nécessaire.
Les réponses, jusqu'à présent, sont Considérablement simplifiées " parce que, eh bien, ils doivent l'être.
En général, les explications seulement sens pour quelqu'un qui comprend le sujet. Je ne pense pas qu'il ya beaucoup que nous pouvons faire à ce sujet.
EDIT: peut-être le meilleur que nous pouvons dire, c'est que les bits des nombres binaires (les zéros et de uns) correspondent directement aux circuits dans le matériel, car les circuits peuvent être configurés pour "stocker" un peu de valeur, et les bits qui peut être manipulé par les circuits.
C'est qu'ils peuvent être stockées, compté, ajouté (et toutes les autres fonctions arithmétiques de base), de sortie et d'entrée dans des groupes se forment des nombres entiers.
Brièvement, les bits en binaire les nombres correspondent aux transistors dans le matériel. Cela, comme les autres l'ont dit, est une simplification énorme. Souvent, il faut plus d'un transistor à manipuler un peu, mais cela dépend de l'intelligence du matériel concepteur.
Quand on regarde Binaire ou un langage de programmation, nous sommes à la recherche à des symboles et des mots que les humains peuvent comprendre ce qui décrivent essentiellement de l'activité électrique d'un système électronique. En fin de compte, la vitesse de l'énergie, de la quantité d'énergie, perte d'énergie, la création de la chaleur et de la lumière, et le CHANGEMENT que la substance dont l'énergie circule à travers subit en raison de la tension que bien que la façon que les effets de l'activité de l'énergie qui circule est entendu par un homme et manipulées ou mises à profit de l'électronique. Un facteur dans la compréhension de l'ensemble du système qui est un ordinateur ou un autre appareil, c'est de savoir ce que l'électricité qui coule à l'intérieur de la il est en train de faire. Pour savoir ce que nous avons décrit l'une de l'électricité de comportements en utilisant les chiffres 1 et 0. Vous devez savoir ce qu'est un élément physique est en train de faire et d'être en mesure de donner une description de celle-ci afin de garder une trace de ce qui se passe lorsque vous modifiez les facteurs que vous pensez contribuer à la maîtrise de l'élément/Substance/Particule Subatomique, les numéros de vous aider à rationaliser ce qui se passe avec les particules que vous êtes incapable de voir.
De manière Binaire est une représentation visuelle qui utilise des nombres pour décrire l'activité de l'électricité dans la pièce de matériel. Leur est un courant de charge ou de leur absence de flux de charge. La charge est converti à D/C de l'alimentation et de l'activité des particules chargées est stabilisée par de l'horloge, la vitesse de l'énergie circulant à travers le circuit, la résistance (qui se traduit par une perte d'énergie et la création de la chaleur, et la quantité de temps avant une pièce d'un circuit est désactivé, tout vient ensemble, ce qui nous permet de comprendre et d'utiliser notre compréhension de ces phénomènes à venir avec une unité de mesure de normaliser la quantité d'énergie qui s'écoule par unité de temps. Ce qui contribue à nous car nous essayons de profiter de l'énergie. Le reste des composants informatiques sont vraiment comme un système avancé de Transistors, condensateurs et résistances pour manipuler la charge que les flux par le biais de ces composants, les composants piège de la charge temporairement ou de le ralentir jusqu'à ce que le composant a atteint un certain niveau d'énergie, et puis un arc électrique se produit provoquant l'énergie stockée pour alimenter un autre composant ou du système avec une (très contrôlée) quantité d'énergie. chaque chiffre binaire est une représentation d'un bit, un bit est une explication du comportement électrique dans un certain composant électrique(connu à partir d'ici avant que le signal), un octet est de 8 pièces de signal électrique. Il est généralement convenu que vous avez besoin d'au moins 8 bits de signal électrique de commande de l'ordinateur pour faire ordonnée et l'utilisation pratique de l'électricité qui coule en elle.
En d'autres termes, l'électricité est réduit et l'énergie stabilisée dans son comportement et ensuite divisés et dirigés par le biais d'une série de composants qui ont besoin d'électricité pour fonctionner et puis la nouvelle composants sous tension faire une chose que l'homme désire pour elle de le faire.
(Très simplifié)
Le binaire (par exemple, une chaîne binaire à partir d'une ligne de code machine/asm) est chargé dans la mémoire de disque. Ensuite, une instruction est envoyée par le processeur logique de contrôleur de mémoire pour charger le contenu de la mémoire dans un processeur local résistant. Elle obtient ensuite interprété comme une instruction de le faire par le processeur.
J'ai appris ce niveau de stuff en faisant microcoding au collège.
En réalité, il y a beaucoup plus d'étapes qui pourraient se produire, selon le processeur de complexité et de puissance. Le processeur est composé de diverses pièces (ALU, registres, etc) et ils coopèrent pour obtenir des instructions, de données et de traitement. Si vous êtes intéressé à ce niveau, de comprendre et je vous félicite de vous poser la question, Id dire sortir d'un livre sur l'architecture de l'ordinateur. J'ai utilisé La Structure De L'Ordinateur De L'Organisation par Tanenbaum au collège.
Essentiellement, et très largement, les instructions à la fin dans la mémoire, et le compteur de programme (PC) registre contient l'adresse de la première instruction.
Le processeur prend en charge les instructions de charge peut déplacer des données vers/à partir de la mémoire de registres. Le processeur de déplacer des données dans le registre d'instructions, et que l'instruction est exécutée lors de la prochaine tic d'horloge.
Je ne suis pas qualifié pour expliquer le génie électrique derrière tout ça, mais vous pourriez sans le regarder.
Bien sûr, tout cela assez simplifiée, comme il ya une énorme quantité de parallélisme se passe dans les processeurs modernes, et je ne prétends même pas à grok que, de toute façon significative.
Vous pouvez trouver ce lien d'intérêt:
http://www.eskimo.com/~ddf/Theory/Micro_Fund/Commands/AssyLnge.html
Dans une courte explication, généralement l'application sera chargé d'une zone de la mémoire et le processeur sera donné le départ de l'adresse, pour le principal ou de commencer la partie.
Un processeur peut faire deux choses, il peut manipuler les données et de transférer des données, donc il va utiliser des pièces spéciales sur le microprocesseur appelés registres pour stocker des valeurs ou de l'emplacement dont il aura besoin.
Donc, pour une instruction if, il y a une commande pour savoir si les deux valeurs sont égales et où aller si ils ne sont pas (de branche si ce n'est égal). Il y aura quelques autres, tels que la direction générale de l'égalité ou de la branche supérieure.
Ces derniers seront dans l'assemblée.
Les commandes sont rangés dans des répertoires, avec les arguments appropriés, et il sera calculé sur le cycle d'horloge suivant.
C'est très simplifié, mais dans une large mesure, ce que vous voyez dans l'assemblée est ce que le microprocesseur va voir.
D'aller dans le détail serait probablement hors de portée pour StackOverflow.
Dans une façon très simplifiée de l'ordinateur peut être représenté comme une boucle infinie (mis en œuvre dans le matériel) et les capacités à faire des opérations arithmétiques simples (également mis en œuvre dans le matériel). Dans la boucle, il effectue les opérations suivantes:
Et c'est tout. Il y a aussi des commandes de contrôle qui permet de changer le PC, et qui sont utilisés pour le "si ... alors ... sinon" instruction.
Cette question est très compliquée, j'ai 2 degrés exactement de cela et je n'ai encore fait qu'effleurer la surface.
Si vous voulez une intro à la façon dont tout cela fonctionne ensemble, MIT a certains cours gratuits disponibles vous pouvez regarder en ligne. Cette est probablement le meilleur pour vous obtenir a commencé.
SW n'est pas seulement le SW de la langue qu'elle est écrite, comme le disent les écrits sur un morceau de papier. SW prend la forme physique ainsi. À un certain point le logiciel au niveau conceptuel croise dans le logiciel, au niveau physique, et qui se produit lorsqu'un programmeur commence à taper un code sur un clavier quelle que soit la SW langue qu'il/elle travaille. À partir du moment où une touche est tapée, c'est électrons tout le chemin vers le bas...c'est le point où l'interface se produit, en ce que à partir du moment où un clavier est appuyé sur l'ensemble de l'entreprise devient la manipulation des électrons -- comme complexe, sophistiqué et ingénieux, un effort que cela peut être. Penser en termes binaires de 0 et de 1 est juste une métaphore pour high & low voltage, déjà une manifestation physique au-delà de la frappe. Lorsque vous tapez la lettre I à la première lettre de SI...ALORS dans un clavier, les tensions correspondant à 01001001 sont placés dans les 8 premières fentes de la base de registre, grâce à des impulsions électriques invité par votre physiquement appuyant sur la touche I. À partir d'ici, c'est de l'électronique.
Chaque chose que vous avez écrit sur un éditeur de texte, tout d'abord, il est stocké dans une mémoire (signaux électriques générés à partir de la keybord) n'importe quel code (ascii,...). De mémoire, ces signaux sont introduits dans le moniteur de l'ordinateur et vous pouvez voir le code source de la frappe. Ensuite, vous exécutez votre compilateur (ou assembleur) qui lit le code source de la mémoire (signaux électriques) et la convertit en code machine, le stockage de celles transformé des signaux électriques dans une autre région de la mémoire (des signaux électriques à nouveau). Lorsque le processeur lit le code de l'ordinateur, ce qu'il voit sont des signaux électriques. Il n'est pas logique niveaux, donc il n'y a pas besoin de convertir le niveau logique au niveau de la tension.