6
votes

Comment le langage de montage interagit-il avec quelque chose comme Internet?

Alors je pensais à des langues l'autre jour, et cela m'a frappé que tout programme écrit dans une langue compilée qui interagit avec Internet est ensuite traduit en montage qui doit interagir avec Internet. Je viens de commencer à apprendre un peu d'assemblée X86 pour m'aider à comprendre C ++ un peu mieux, et je suis déconcerté de la manière dont quelque chose de si bas pouvait faire quelque chose comme accéder à Internet.

Je suis sûr que la réponse complète à cette question est beaucoup plus que si elle conviendrait dans une réponse afin que quelqu'un puisse me donner peut-être un résumé de base?


2 commentaires

Voici une question similaire. Stackoverflow.com/Questtions/1837582/... Au-delà de cela, vous devez vous rappeler que" l'accès à Internet "consiste simplement à envoyer des données formatées dans des messages TCP / IP sur un fil à un autre ordinateur. C'était une sorte d'épiphanie pour moi aussi quand j'ai réalisé qu'il n'y avait rien de magique à ce sujet.


Toute Internet fonctionne sur 1 et 0's, ou plutôt, l'intégralité de l'Internet est le produit d'un nombre incroyable d'extraits de code de machine interagissant. Je trouve cela sans doute plus étonnant. :)


4 Réponses :


13
votes

Des programmes d'espace utilisateur qui "interagissent avec Internet", dans tous les systèmes modernes, le font en émettant Système Appels sur le système d'exploitation sous-jacent, qui fournit l'API pour une pile TCP / IP.

Le système appelle en question (telle que socket , écoute , accepte , etc.) sont généralement documentés au niveau C, Mais dans chaque mise en œuvre du système d'exploitation, ils traduiront bien sûr le code de la machine. Mais si les valeurs se déroulent en particulier des registres ou des emplacements dans la mémoire pointés par des registres particuliers, etc. sont assez mineurs et totalement spécifiques au système.

Si vous vous demandez comment le code de la machine (probablement également compilé de c) dans les pilotes de noyau et de périphérique "interagit avec Internet" (en réponse aux appels système), il le fait à la fois en construisant et en maintenant en mémoire structures de données pour suivre l'état de diverses choses, et en interagissant avec le matériel sous-jacent (par exemple, via des interruptions, des ports d'E / S, des zones de dispositif mappées de mémoire, ou tout ce qui utilise une architecture particulière) - comme il interagit avec (disons) un Affichage vidéo, ou un périphérique de disque.


2 commentaires

ouais ... il est difficile d'imaginer un tel programme en mode utilisateur faisant des choses complexes comme ça, mais il s'agit vraiment d'appeler une bibliothèque écrite dans quelque chose de niveau supérieur (C / C ++) qui est ensuite traduit par le Compilateur dans un groupe de code de montage, qui, à un niveau très bas, envoie une bande de hauts de 5 volts et de bas de 0 volts à travers un câble Ethernet de l'autre côté du monde ... (si je comprends correctement)


Eh bien, techniquement, les impulsions Ethernet physiques ne vont qu'à votre routeur. Le routeur est alors responsable de les retransmettre en votre nom au routeur suivant et le routeur suivant est responsable de la retransmission, etc., etc.



2
votes

Cela dépend. Lorsque vous lisez sur un script Web écrit en C, c'est en fait un programme CGI. CGI est un protocole, pas une langue. CGI spécifie de mettre "Obtenir", "Poster", etc. dans demande_method, "foo = bar? Baz = 42" dans Query_string, post des données dans STDIN, etc. Pour y accéder, le programme CGI utilise des appels système. Le serveur Web utilise CGI pour communiquer avec un script Web. Un programme qui communique sur Internet par lui-même peut utiliser l'API System Sockets.

En résumé, le système d'exploitation fait toutes les communications. Le programme fait simplement des appels système appropriés.

Si vous vous demandez comment le système d'exploitation communique sur Internet, la réponse est que le noyau du système d'exploitation utilise un pilote pour interfacer avec la carte réseau sur un port IO, mappée de mémoire IO, etc. La mise en œuvre du système d'exploitation et de la carte réseau Normes de protocole Internet pour tout pour travailler ensemble.


0 commentaires

0
votes

Ce que vous devez faire est de rechercher certains de ces projets PIC-Server. Certains d'entre eux sont des serveurs Web écrits en montage et fonctionnent sur du matériel 8 bits. Cela vous donnera une idée claire de la manière dont quelque chose de bas à bas niveau que l'assemblage peut être utilisé pour interagir avec le reste du monde via Internet.

Cela implique essentiellement

  1. Écrire des pilotes de basse niveau (couche 2) pour interfacer avec le matériel de réseau - Ceci peut utiliser Ethernet ou même des modems (avec glissement).
  2. Écrivez les couches suivantes - IP et TCP - pour traiter les paquets TCP / IP. Cela aura besoin d'une magie de montage car ces processus sont tout à fait impliqués.
  3. Écrivez le calque d'application - qu'il s'agisse d'un serveur Web ou d'un client ou autre - qui exploite les couches sous-jacentes.

    J'espère que cela éclaircit un peu de doute.


0 commentaires

0
votes

est-il raisonnable de dire qu'à un moment donné quel que soit le programme, le code est transformé (faute de la durée appropriée) en une forme de langage "assemblée" (je pense qu'il y en a plus d'un) qui a alors un " une personne à une "relation avec le code de la machine? Je ne sais pas comment .NET et ILASM / Java et son bytecode correspondant s'intégrent à cela, mais je pensais que tout cela à un moment donné est devenu un assemblage puis un code de machine.


0 commentaires