Ma question est simple car je suis débutant, alors est-ce que je peux programmer un système informatique complet en utilisant seulement le langage C++? Merci.Programmer un système avec C++
Répondre
Simplement, oui vous pouvez.
Et comment faites-vous un accès direct au registre du matériel en C++ ou même en C? – hirschhornsalz
Eh bien cela dépend de la façon dont vous définissez "système" alors n'est-ce pas? Je supposais qu'il voulait dire un système de logiciel complet ... – Goz
drhirsch, dépend également du matériel. Si le registre matériel est mappé en mémoire, aucun problème. –
Bien ... Généralement, vous aurez besoin d'au moins un peu d'assemblage aux niveaux les plus bas, pour une initialisation dépendant de la machine, etc.
Donc "non" à proprement parler, mais cela peut vraiment être une très petite proportion, rendant la vraie réponse "oui".
BeOS est un exemple de système d'exploitation écrit en C++.
Et aussi AROS. (http://www.aros.org) –
Vous pouvez écrire tous les programmes possibles en C++. En fait, vous pouvez écrire la plupart des programmes dans la plupart des langues, surtout si vous excluez les problèmes de performances. Ce concept est connu sous le nom de "complétude de Turing"
Bien sûr, cela ne vaut que pour une définition spécifique de "programme possible", et la complétude de Turing suppose un modèle assez abstrait. Vous ne pouvez vraiment pas écrire un noyau de système d'exploitation PC en Perl, simplement parce qu'il ne fonctionnera pas directement sur le matériel. – Thomas
D'autre part, il n'y a pas de loi fondamentale que perl ne peut pas être compilé en code natif. – jalf
Techniquement, vous pouvez coder un système d'exploitation dans n'importe quelle langue complète de Turing. Vous pouvez toujours utiliser Perl pour écrire un compilateur qui génère l'assembly nécessaire. –
Vous pourriez programmer un système d'exploitation complet en C++ si vous étiez si incliné (et disposiez d'une dizaine d'années ...) puisqu'il compile en code machine. Cependant, ce n'est probablement pas une tâche «débutante», et pour être honnête, l'ancien C serait un meilleur choix pour les choses au niveau du système (les noyaux Windows et Linux utilisent C).
Juste parce que quelque chose "se compile en code machine" ne signifie pas que vous pouvez y écrire un OS complet. Comment allez-vous écrire un changement de contexte en C++? Comment allez-vous enregistrer les valeurs de registre? – tgamblin
C++ fournit les mêmes fonctionnalités pour le code d'assemblage en ligne que vous trouvez dans C. Vous pourriez être pédant et argumenter que cela n'écrit pas en C++, mais la plus grande partie du code serait C++. –
Un système d'exploitation complet ne prend pas une décennie à écrire. Beaucoup de gens, y compris moi-même, ont écrit des systèmes d'exploitation minimes en un jour ou deux. Tout dépend de la complexité de l'OS. Une machine peut ne pas avoir besoin d'un système d'exploitation. –
Non, vous ne pouvez pas.
Vous avez besoin de services de bas niveau qui ne sont pas normalisés dans les langages de programmation. Par exemple, vous avez besoin d'un port système et d'E/S DMA, qui sont fondamentalement différents sur toutes les plates-formes. Ceci est généralement fait par le code de l'assemblage en ligne au niveau le plus bas, bien que certains compilateurs C++ vous fournissent des mots-clés spéciaux pour accéder aux fonctionnalités du CPU telles que les registres et les opcodes spéciaux. Par exemple, dans MS VC++, vous avez une pseudo-variable _EAX pour accéder au registre de la CPU EAX.
Vous êtes sur quelque chose, mais le poste se lit un peu comme FUD. Le matériel peut être différent, mais une quantité surprenante peut être faite en C ou C++. Regardez simplement à quel point le noyau Linux est écrit en assembleur. Et beaucoup de ce qui est écrit en assembleur n'est pas parce qu'il était impossible de faire en C (ou C++, le même principe s'applique) mais pour des raisons de performance. –
Je suis d'accord. Il est important de comprendre que seulement quelques codes non-C++ sont requis. Cependant, il est également important qu'un langage de programmation lui-même ne soit pas édenté sans lien approprié avec le monde réel. –
En fait, C++ a un rapport technique officiel qui spécifie exactement une telle interface de bas niveau à HW. – MSalters
Vous pouvez être intéressé par this book. Il explique comment les ordinateurs fonctionnent, en passant du niveau matériel le plus bas à un code. Je ne le recommande pas assez!
Vous aurez besoin d'un assemblage. Cela est dû au fait que certaines instructions privilégiées sont nécessaires pour la conception du système d'exploitation qui ne seront pas générées par un compilateur C/C++. Par exemple, lorsqu'un code utilisateur veut utiliser un service de système d'exploitation (comme une communication interprocessus), il doit passer du mode utilisateur au mode noyau. Ceci est normalement effectué en émettant un interruption de logiciel (SWI). Un C++ ne créera jamais l'instruction SWI. De même, lors de l'écriture d'une bibliothèque arithmatique entière de précision arbitraire, il faudra trouver la valeur du bit de report. Il n'y a pas d'opérateur C/C++ capable de faire cela pour vous. Vous devrez utiliser l'assembleur.
Incidentation, écrivant directement à un registre de dispositif peut et est souvent fait en C. le mot-clé volatile est placé dans la langue spécifiquement pour les registres dont les valeurs peuvent changer de façon inattendue
Dépend de l'OS. Rappelez-vous le bon vieux temps de MS-DOS, Windows 3.1/95/98, MacOS jusqu'à la version 9? Ils étaient limités, mais j'ai fait beaucoup de bon travail sur certains d'entre eux. –
Oui. C++ est Turing Complete ... Tout comme Excel, qu'un mec intelligent a découvert lors de l'implémentation a realtime 3D engine.
- 1. programmer un lecteur vidéo avec C# (mono) pour linux
- 2. Programmer un chatbot avec Java
- 3. Comment programmer un système d'activation de logiciel super simple?
- 4. Programmer CMD en C
- 5. Comment programmer un programme
- 6. Programmer une tâche dans Vista - Redémarrage du système
- 7. Programmer un "faux" routeur
- 8. Comment programmer un AVR Raven avec Linux ou Mac?
- 9. Comment programmer un plug-in?
- 10. Comment programmer un lecteur de musique simple?
- 11. Comment programmer un plug-in WordPress personnalisé?
- 12. Comment programmer un service Windows en C# pour démarrer une application pour un utilisateur?
- 13. Comment programmer un pool de connexions?
- 14. Comment programmer un "décodeur HTML décimal"?
- 15. Comment programmer un routeur par programme?
- 16. Comment utiliser C++/CLI pour programmer des applications Winforms
- 17. Programmer des cartes-images
- 18. Programmer la lecture MIDI avec OpenAL et SF2
- 19. Programmer l'impression de documents
- 20. Modifier le système C#
- 21. Construire un système pour un projet C++ VISUAL STUDIO 2008
- 22. Est-il possible de programmer un point d'accès sans fil?
- 23. Comment puis-je programmer un adaptateur sans fil?
- 24. C#: Système de suivi GPS
- 25. Programmer un travail dans un serveur Web hébergé
- 26. Programmer l'application dans BREW
- 27. Programmer la visibilité de l'image
- 28. Options de base avec un système d'autorisation?
- 29. utiliser un système de cache avec WordPress
- 30. Programmer une application de console en utilisant C#
Qu'entendez-vous par "un système informatique complet"? –
Eh bien, au moins vous visez haut;) –
Il ya beaucoup de choses à un système informatique complet que les débutants se rendent compte. En outre, les débutants n'ont souvent pas l'expérience nécessaire pour se rendre compte qu'il existe plus de types de systèmes informatiques différents que ceux qui sont assis sur les pupitres des peuples (y compris les iPods, les Blackberries et les calculatrices). –