IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Assembleur Discussion :

Débutant et questions: choix, différences


Sujet :

Assembleur

  1. #1
    Membre habitué
    Homme Profil pro
    root
    Inscrit en
    Janvier 2013
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : root

    Informations forums :
    Inscription : Janvier 2013
    Messages : 174
    Points : 144
    Points
    144
    Par défaut Débutant et questions: choix, différences
    Bonjour à tous.
    J'ai presque 0 connaissance sur l'assembleur.
    J'aimerais apprendre l'assembleur et j'ai ces questions :

    1. Je suis un utilisateur de P.C. je ne connais que le 32 bits et le 64 bits (pour mes systèmes d'exploitation/applications). Mon but est d'apprendre l'assembleur pour l'utiliser pour/dans les P.C. modernes (pas les vieux processeurs).

    Vu les noms: i386, i686, x86, x64, i64, amd64, 32 bits, 64 bits, je sais pas sur quoi m'orienter sans risque de me tromper, mais j'ai une idée : il comportera un 64 .

    2. J'aimerais apprendre l'assembleur, bien, mais j'en vois plusieurs: nasm, masm, fasm, etc.
    Lequel est le vrai assembleur si je puis dire ? Vu qu'ils font tous assembleur, ils sont d'un niveau haut au langage assembleur (en terme de niveau langage (ex: c(bas) et php(haut)) ?

    3. Avant c'était ..., après 32 bit, maintenant 64 bit, prochainement on aurait du 128 bit j'imagine.

    Si on part de ce principe: en 64 bit, peut-on prévoir et faire un code qui sera compatible lors du 128 bit dans le futur ? ou faudra partir d'un principe départ à zéro ? Je sais qu'on connait pas les nouvelles fonctions si je puis dire du nouveau (128 bit ou autres) mais autres que ces fonctions, il y a des choses que je peux déjà prévoir ?

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 360
    Points : 23 600
    Points
    23 600
    Par défaut
    Bonjour,

    Citation Envoyé par kripteks Voir le message
    J'ai presque 0 connaissance sur l'assembleur.
    J'aimerais apprendre l'assembleur et j'ai ces questions :

    1. Je suis un utilisateur de P.C. je ne connais que le 32 bits et le 64 bits (pour mes systèmes d'exploitation/applications). Mon but est d'apprendre l'assembleur pour l'utiliser pour/dans les P.C. modernes (pas les vieux processeurs).
    Ça pourrait pourtant être une bonne chose. Certes, il arrive un moment où un certain « cut off » doit s'appliquer, alors que l'on enseigne encore l'assembleur sous D.O.S. aujourd'hui, en 16 bits avec l'interruption 21h.

    Cependant, j'avais dit dans une précédente discussion qu'apprendre à programmer en assembleur sur les derniers Intel d'aujourd'hui, c'est comme apprendre à voler sur A380. C'est à peu près comparable en terme de puissance et de sophistication. C'est possible mais c'est très vaste si tu veux tout assimiler et ce n'est pas forcément l'appareil avec lequel tu vas prendre le plus de plaisir. A contrario, commencer par de l'aviation légère permet de distinguer immédiatement ce qui fait partie des fondamentaux du vol et ce qui relève des équipements d'un appareil donné.

    S'investir à 100 % et dès le départ dans l'assembleur PC peut être une bonne chose, mais comme les micro-processeurs sont aujourd'hui beaucoup trop rapides pour que l'on puisse humainement percevoir le gain en performance dès son premier programme et que, parallèlement, les systèmes sont de moins en moins conçus pour être exploités directement de cette façon, tout cela risque de rester très abstrait pour toi, et tu pourrais finalement passer à côté de tout ce qui fait l'intérêt d'aller descendre « tout en bas » comme on le fait quand on programme en assembleur.

    Vu les noms: i386, i686, x86, x64, i64, amd64, 32 bits, 64 bits, je sais pas sur quoi m'orienter sans risque de me tromper, mais j'ai une idée : il comportera un 64 .
    Apprendre le 64 bits sans voir le 32 aujourd'hui est encore trop récent : il y a énormément de machines 32 bits en fonction et, comme je te l'ai dit, il arrive encore qu'on enseigne l'assembleur x86 16 bits qui n'apporte plus rien d'utile aujourd'hui.

    Intel a essayé de sortir une architecture IA64 (« Itanium ») qui faisait table rase du passé et cela s'est soldé par un échec commercial. C'est finalement AMD qui a conçu x86_64 en s'arrangeant pour que les programmes 32 bits soient directement compatibles dessus sans infrastructure particulière et c'est devenu un standard de fait… qu'Intel a suivi.

    Ensuite, sais-tu à quoi correspondent réellement tous ces noms : i386, i686, x86, x64, i64, amd64, 32 bits, 64 bits ?

    2. J'aimerais apprendre l'assembleur, bien, mais j'en vois plusieurs: nasm, masm, fasm, etc. Lequel est le vrai assembleur si je puis dire ? Vu qu'ils font tous assembleur, ils sont d'un niveau haut au langage assembleur (en terme de niveau langage (ex: c(bas) et php(haut)) ?
    L'assembleur est le langage d'une famille de micro-processeurs donné. Les logiciels que tu cites sont des produits concurrents qui sont capable de compiler de l'assembleur en langage machine. Il n'y donc pas de « vrai » assembleur, dans le sens où tu l'entends.

    « MASM » signifie « Microsoft Assembler » et fut le premier vrai produit commercial à succès dans ce domaine. Et comme souvent, les produits qui l'ont suivi ont adopté une graphie similaire pour qu'on les reconnaissent. « TASM » signifie « Turbo Assembler » et était édité par Borland. Il a longtemps été l'assembleur préféré des développeurs des années 1990 et son éditeur est resté un bon moment sur le devant de la scène avec « TASM / TDebug », « Turbo Pascal » (un monument) et « Turbo C » dans une moindre mesure. Ces produits sont aujourd'hui obsolètes (pour un usage moderne, en tout cas).

    Les assembleurs populaires sur PC aujourd'hui sont NASM et FASM. Ils ont l'avantage d'être à jour mais surtout d'être des logiciels libres. Tu les trouves donc embarqués directement dans les distributions des O.S. libres (Linux, *BSD) et tu peux les utiliser sans être un pirate.

    3. Avant c'était ..., après 32 bit, maintenant 64 bit, prochainement on aurait du 128 bit j'imagine.
    Pas tout de suite, non. Il faut comprendre que lorsque tu doubles la largeur de ton architecture, tu ne doubles pas la puissance potentielle exploitable mais tu l'élèves au carré. L'architecture 64 bits n'est même pas encore une généralité, et les fondeurs de micro-processeurs rencontrent depuis quelques années des limites dans la finesse de gravure qu'ils peuvent atteindre.

    La mode en ce moment est de populariser la parallélisation de processeurs plutôt qu'en fondre de plus rapides. Ça pose pas mal de problèmes mais lorsque toute une génération de programmeurs sera habituée à exploiter ça massivement, il sera beaucoup plus facile de multiplier les cœurs que de les faire tourner plus vite.

    Il y a bien eu quelques tentatives, notamment le Emotion Engine de la Playstation, mais il s'agissait en fait d'un 64 bits capables d'effectuer automatiquement des opérations en plusieurs étapes sur deux registres.

    Il est important de bien comprendre qu'aussi abstraite que soit l'algorithmique qui sous-tend la majorité des développements, il arrive bien un moment où il faut effectuer le travail et fabriquer la machine capable de le mener à bien, et c'est le stade où on arrive ici. Comprendre pourquoi fabriquer un 128 bits n'est pas le même travail qu'un 64 en fait partie.

    Si on part de ce principe: en 64 bit, peut-on prévoir et faire un code qui sera compatible lors du 128 bit dans le futur ? ou faudra partir d'un principe départ à zéro ? Je sais qu'on connait pas les nouvelles fonctions si je puis dire du nouveau (128 bit ou autres) mais autres que ces fonctions, il y a des choses que je peux déjà prévoir ?
    Si Intel produit un 128 bits à court ou moyen terme, il est probable qu'elle ne commette pas deux fois la même erreur, d'autant plus qu'à chaque génération, le parc informatique est beaucoup plus grand qu'à la précédente et donc, avec lui, l'importance de garantir une compatibilité ascendante.

  3. #3
    Membre habitué
    Homme Profil pro
    root
    Inscrit en
    Janvier 2013
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : root

    Informations forums :
    Inscription : Janvier 2013
    Messages : 174
    Points : 144
    Points
    144
    Par défaut
    Bonjour et merci pour la réponse.

    Comme tu le précises, apprendre directement le 64 bits serait plus dur.
    Je le comprend car d'après mes souvenir anciens sur recherche assembleur, je me souviens que les anciens cpu avait moins de fonction, plus on a évolué plus on a eu des fonctions nouveaux (en plus) à apprendre.

    La raison pour laquel je voulais apprendre directement le 64 bits, est que tous les tutos qu'on rencontre généralement sont déstiné aux anciens processeur, du coup j'ai eu l'idée de rester en mode nostalgique avec mes connaissances assembleur et rien faire d'utile (à jours).

    Je viens d'avoir une penser sur le fait que les systèmes d'exploitation 64 bits (linux/windows) supporte les applications 32 bits dans un environnement 64 bits.
    Du coup, question:
    - on utilise des fonctions 32 bits directement dans un code 64 bits
    ou
    - on utilise des nouvelles fonctions du 64 bits, qui rend compatible du 32 bits

    Comme sa, je pourrais déduire, que si j'apprendrais (pas vraiment mais) pour rien ou non les ancienns 8/16/32 bits.



    Pour venir à ta question, sur si je connais: i386, i686, x86, x64, 32 bits, 64 bits:
    La réponse est non, mais j'ai un peu d'idée (car j'ai bien l'embara du choix avec les os linux):
    Je sais que i386, i686 sont des choses(je connais pas le terme) anciens.
    Que le x86 supporte uniquement le 32 bits (et peut-être le 16 bits/moins).
    Que le x64 supporte le 64 bits et le 32 bits (et peut-être moins aussi).
    Et encore à propos de x86 et x64, je sais pas quel terme employer.

    Je sais aussi que le x86, x64, i386, i686 sont pour les P.C.

    Je vais voir s'il existe (surement) un/des tutos sur les i386, i686, x86, x64, 32 bits, 64 bits etc, car c'est très important, mais les tutos sont toujours ciblé à quelque chose de standart/global, qui fait qu'on discute pas trop dessus.

    édite: bingo: http://asm.developpez.com/faq/?page=fx86



    Pour revenir au langage assembleur, j'ai un peu deviné de même, mais sa me fait encore questionné.

    Un code assembleur est constitué des fonctions d'un (type de) processeur.
    Mais que devient ce code ? je sais qu'au final dans tous les cas on aura du binaire, mais on a quel cas:
    - le fichier contenant notre code assembleur est compilé pour avoir un fichier consituter de binaire et ce fichier est interpreter par le processeur.
    ou
    - le fichier contenant notre code assembleur est directement connu et interpreter par notre processeur et applique notre code en mode binaire.

    Je me penches plus sur le deuxième cas, mais je suis pas sûr.



    Merci encore pour tes réponses.

Discussions similaires

  1. [Débutant] Quelques questions bêtes...
    Par Stomp dans le forum Windows
    Réponses: 2
    Dernier message: 02/08/2019, 12h47
  2. ASP : question choix base de données
    Par Goldorak2 dans le forum ASP
    Réponses: 3
    Dernier message: 28/01/2006, 20h03
  3. [Débutant] Deux questions concernants les vues
    Par 13obscur dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 19/04/2005, 15h29
  4. Réponses: 10
    Dernier message: 04/05/2004, 17h00
  5. [Débutant]Quelques questions de principe sur l'API win32
    Par silver_dragoon dans le forum Windows
    Réponses: 4
    Dernier message: 19/03/2004, 19h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo