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 :

Lire fichier lib (compréhension des fonctions/macro (masm))


Sujet :

Assembleur

  1. #21
    Invité
    Invité(e)
    Par défaut
    Tu t'engages sur une voie difficile et tu vas vite rencontrer un mur. Pour faire un assembleur, tu vas devoir franchir plusieurs étapes :
    - apprendre à écrire un programme assembleur structuré (sais-tu par exemple qu'il y a le mode console et le mode Windows ?)
    - comprendre le format coff et faire en sorte que tu puisses utiliser un linker standard pour te générer l'exe,
    - si tu dois générer toi-même l'entête PE, alors, bon courage !
    - le mode d'adressage utilisé par Intel (et AMD) est assez complexe et nécessite d'effectuer des combinaisons de bits (un tuto traite cette question sur ce site).
    Kannagi dit que tu peux écrire ton assembleur en C/C++. C'est vrai. En fait, tu peux utiliser n'importe quel langage pouvant travailler au niveau du bit. Mais, si tu souhaites acquérir de solides connaissances en assembleur, il vaut mieux que tu utilises intégralement l'assembleur.
    J'ai moi-même "écrit" un assembleur 16 bits il y a une vingtaine d'années. Beaucoup de travail et résultats à la limite du risible. Mais ça m'a servi à progresser en assembleur. C'est déjà ça mais mon rêve de révolutionner l'informatique s'est abîmé dans les flots. De profundis...
    Et le 16 bits est une promenade de santé, comparé au 32 bits.

  2. #22
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 452
    Points : 43 103
    Points
    43 103
    Par défaut
    Si tu veux créer ton propre .exe, depuis un fichier source en assembleur, il va te falloir potasser la doc Intel sur l'encodage des opcodes. Tu devra aussi maitriser le format PE, la rellocation, l'appel de fonctions externes, etc.

    T'es pas sorti de l'auberge, surtout que les CPU Intel encodent les instructions sur un nombre variable de bits.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #23
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Citation Envoyé par matrob72 Voir le message
    Ce que tu dis est faux, grâce au mot clef
    A quel sujet ?

  4. #24
    Nouveau membre du Club
    Homme Profil pro
    Recherche, Comprendre, apprendre et encore recherche !
    Inscrit en
    Janvier 2019
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Recherche, Comprendre, apprendre et encore recherche !

    Informations forums :
    Inscription : Janvier 2019
    Messages : 38
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par Kannagi Voir le message
    Apres il y'a a vraiment rien de bien sorcier ,c'est une analyse de texte + génération d'opcode.
    La dessus, kannagi, rien de bien sorcier... regarde les messages au dessus.

  5. #25
    Nouveau membre du Club
    Homme Profil pro
    Recherche, Comprendre, apprendre et encore recherche !
    Inscrit en
    Janvier 2019
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Recherche, Comprendre, apprendre et encore recherche !

    Informations forums :
    Inscription : Janvier 2019
    Messages : 38
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par Asmou Voir le message
    - apprendre à écrire un programme assembleur structuré (sais-tu par exemple qu'il y a le mode console et le mode Windows ?)
    Oui je le sais, je sais même qu’il y a un octet qui défini quel application c’est (linker, mode console, mode Windows). Peut d’autre option ?
    Citation Envoyé par Asmou Voir le message
    - comprendre le format coff et faire en sorte que tu puisses utiliser un linker standard pour te générer l'exe,
    - si tu dois générer toi-même l'entête PE, alors, bon courage !
    - le mode d'adressage utilisé par Intel (et AMD) est assez complexe et nécessite d'effectuer des combinaisons de bits (un tuto traite cette question sur ce site).
    Effectivement, je veux créer moi même l’entête.
    Citation Envoyé par Asmou Voir le message
    Kannagi dit que tu peux écrire ton assembleur en C/C++. C'est vrai. En fait, tu peux utiliser n'importe quel langage pouvant travailler au niveau du bit. Mais, si tu souhaites acquérir de solides connaissances en assembleur, il vaut mieux que tu utilises intégralement l'assembleur.
    J'ai moi-même "écrit" un assembleur 16 bits il y a une vingtaine d'années. Beaucoup de travail et résultats à la limite du risible. Mais ça m'a servi à progresser en assembleur. C'est déjà ça mais mon rêve de révolutionner l'informatique s'est abîmé dans les flots. De profundis...
    Et oui je me suis donné cet objectif justement pour avoir de solides connaissances en assembleur.
    Tu aurais gardé quelque trace de l’assembleur que tu as fait ?
    Citation Envoyé par Asmou Voir le message
    Et le 16 bits est une promenade de santé, comparé au 32 bits.
    Si il y a autant de différence entre le 16 et le 32 bit, alors je préfère même pas y penser sur le 64bit. 🤯

    Je savais bien qu’il y aurait du boulot mais je ne pensais pas qu’il y aurait autant de chose à prendre en compte...
    Bon ben je vais continuer et voir jusqu’ou Sa vas me mener. 😊

    Sinon merci, je ne savais pas que l’entête s’appelait entête ´PE’. Avec les bon mots, la recherche est plus simple. 😘

  6. #26
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Citation Envoyé par matrob72 Voir le message
    La dessus, kannagi, rien de bien sorcier... regarde les messages au dessus.
    J'ai pas tort , je peux te passer des codes sources de compilateur ASM très basique

    Mais il faut savoir lire en entier aussi j'ai rajouté aussi `Mais ça peut devenir plus complexe (si on veut faire un assembleur assez complet) vu que ça reste vouloir créer un compilateur. "
    L'assembleur n'est pas un langage normalisé , donc tu peux tres bien faire un asm sans macro/define etc etc, ça restera un assembleur , quand tu veux par contre peaufiner un assembleur (macro /define/label temporaire / du preprocesseur plus conséquent) ça reste plus complexe.

    Si tu parle du format PE c'est complexe , mais cela n'a pas forcément à voir avec l'assembleur ni un programme assembleur , ce que je dis est valide , tu peux faire un asm x86 qui fournit que du binaire.

  7. #27
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par matrob72 Voir le message
    ...
    Tu aurais gardé quelque trace de l’assembleur que tu as fait ?

    Si il y a autant de différence entre le 16 et le 32 bit, alors je préfère même pas y penser sur le 64bit. 🤯
    Je n’ai rien conservé de toutes mes activités à l’époque du 16 bits. De plus, j’ai cessé toute forme de développement informatique pendant une quinzaine d’années. Du reste, la segmentation de la mémoire et l’appel à des interruptions du DOS ou du BIOS imposaient un tout autre style d’écriture difficilement transposable. C’est sans doute Windows, d’ailleurs, qui a bousculé le plus l’écriture des programmes plus, probablement, que le passage de 16 à 32 bits.

    Le 64 bits, c’est également un autre monde dans lequel il faut éviter de s’aventurer sans expérience confirmée du 32 bits. Le problème est toujours le même : il faut trouver le BON outil et là, autant te dire que les bons conseils sont rarissimes.

  8. #28
    Nouveau membre du Club
    Homme Profil pro
    Recherche, Comprendre, apprendre et encore recherche !
    Inscrit en
    Janvier 2019
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Recherche, Comprendre, apprendre et encore recherche !

    Informations forums :
    Inscription : Janvier 2019
    Messages : 38
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par Kannagi Voir le message
    J'ai pas tort , je peux te passer des codes sources de compilateur ASM très basique
    Je suis toute ouï pour ces codes sources. Je pourrais m’en inspirer. 🧐


    Citation Envoyé par Asmou Voir le message
    Je n’ai rien conservé de toutes mes activités à l’époque du 16 bits.
    Le 64 bits, c’est également un autre monde dans lequel il faut éviter de s’aventurer sans expérience confirmée du 32 bits. Le problème est toujours le même : il faut trouver le BON outil et là, autant te dire que les bons conseils sont rarissimes.
    Dommage. Tu aurais des exemples des différences entre le 16,32 et 64 bit ?
    A part les instructions plus long il y a d’autre différence ?

  9. #29
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 452
    Points : 43 103
    Points
    43 103
    Par défaut
    Dommage. Tu aurais des exemples des différences entre le 16,32 et 64 bit ?
    A part les instructions plus long il y a d’autre différence ?
    Les différences sont essentiellement depuis les processeurs 64 bits :

    Espace d’adressage étendu par le passage en 64 bits
    nombre de registres doublés (ajouts des registres r8 à r15).
    extensions des registres MMX (mais là je sais pas)
    Plus de possibilité de lancer des applications 16 bits (abandon de TSS en 64 bits)
    Plus de v86 mode
    Plus de segmentation, les protections se font via la pagination.
    Je crois qu'il y a un niveau supplémentaire dans les tables de pages.

    Un CPU 64 bits démarre toujours en mode réel, si il est mis en 32 bits, il aura accès au fonctionnement antérieur (compatibility mode).
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  10. #30
    Invité
    Invité(e)
    Par défaut
    Pour completer, il y a bien 8 registres MMX
    + 16 registres XMM de 128 bits chacun
    + 16 registres YMM DE 256 bits chacun.
    C’est assez phénoménal quand on y pense.

    En 64 bits, je me contente, pour l’instant, de tester les programmes des autres (ceux du MASM 64 SDK)

  11. #31
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Il y'a aussi l'extension AVX qui à des registres ZMM 512 bits
    Mais bon je crois que ça mérite un topic entier les instructions SIMD

    Après le nombre phénoménal ,oui mais si on compare avec la PS2 (qui date de 2000 ) avait 32 registres de 128 bits ! :p
    Et la PS3 (2005) faisait 128 registre de 128 bits , bref je précise juste pour dire que les proc d'architecture x86 sont en faite en général assez en retard

  12. #32
    Nouveau membre du Club
    Homme Profil pro
    Recherche, Comprendre, apprendre et encore recherche !
    Inscrit en
    Janvier 2019
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Recherche, Comprendre, apprendre et encore recherche !

    Informations forums :
    Inscription : Janvier 2019
    Messages : 38
    Points : 27
    Points
    27
    Par défaut
    Mais qui dit un regitre de 128, 512 bits, dit plus de tour d’horloge sur des processeurs 32, 64bit, donc il se dise de développer peut être les bus en premier.
    Sinon, auriez vous les codes de définition du processeur dont on développe le logiciel ?
    (Je n’ai vue que des exemples sur : .386, .486, .586)

  13. #33
    Nouveau membre du Club
    Homme Profil pro
    Recherche, Comprendre, apprendre et encore recherche !
    Inscrit en
    Janvier 2019
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Recherche, Comprendre, apprendre et encore recherche !

    Informations forums :
    Inscription : Janvier 2019
    Messages : 38
    Points : 27
    Points
    27
    Par défaut
    Je voudrais également être éclairé sur le fichier PE en mode 64bit. Dans la déclaration de table, comment on fait quand le fichier fait plus de 4Go ? En mode PE+, le codage de la taille des sections et leurs offset peuvent dépasser les 4 octets donc comment on fait ?

  14. #34
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par matrob72 Voir le message
    ...
    Sinon, auriez vous les codes de définition du processeur dont on développe le logiciel ?
    (Je n’ai vue que des exemples sur : .386, .486, .586)
    Tu trouveras l'essentiel de l'info que tu souhaites dans l'ouvrage :

    Intel® 64 and IA-32 Architectures
    Software Developer’s Manual
    Volume 2A:
    Instruction Set Reference, A-L

    Accessible en PDF (et gratuitement à l'adresse : https://software.intel.com/en-us/dow...-reference-a-l
    Il faut que tu lises l'intégralité du chapitre 2 INSTRUCTION FORMAT
    Le volume 2 est disponible en plusieurs tomes mais également en un seul fichier.

    Regarde également tous les volumes de cette série. Lis notamment le volume 1 : Basic Architecture

    Concernant les entêtes PE et PE+, il faut que tu passes par Google. Ne t'attends pas à des miracles car de nombreuses parties sont assez hermétiques.

  15. #35
    Invité
    Invité(e)
    Par défaut
    Va également dans la page Tutoriels Assembleur de ce site.
    Neitsa y propose un ouvrage complet en 2 parties intitulé : Décodage du jeu d'instructions x86 / x86-64 (x64)

  16. #36
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Citation Envoyé par matrob72 Voir le message
    Mais qui dit un regitre de 128, 512 bits, dit plus de tour d’horloge sur des processeurs 32, 64bit, donc il se dise de développer peut être les bus en premier.
    Pas forcément , parce que ça peut être des "coprocesseurs" en interne qui le gère et donc assez indépendant du reste de l'architecture.

    En général je remarque souvent l'inverse , les instructions SIMD sont en général bien plus rapide que le reste des instructions.

    Citation Envoyé par matrob72 Voir le message
    Je voudrais également être éclairé sur le fichier PE en mode 64bit. Dans la déclaration de table, comment on fait quand le fichier fait plus de 4Go ? En mode PE+, le codage de la taille des sections et leurs offset peuvent dépasser les 4 octets donc comment on fait ?
    Après je pense pas que ça soit un cas très courant d'avoir un exécutable qui dépasse 4 Go
    Il faut savoir que les exécutables sont chargé en RAM donc 4 Go pris pour un exécutable ça reste assez énorme (mon ordi à 8 Go , il souffrirait d'avoir la moitié pris ).

  17. #37
    Nouveau membre du Club
    Homme Profil pro
    Recherche, Comprendre, apprendre et encore recherche !
    Inscrit en
    Janvier 2019
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Recherche, Comprendre, apprendre et encore recherche !

    Informations forums :
    Inscription : Janvier 2019
    Messages : 38
    Points : 27
    Points
    27
    Par défaut
    C’est vrais que c’est pas courant mais certain logiciel comme des simulateurs peuvent les dépasser de loin.
    Sinon, pour ce à qui ça intéresse, il y a un bon site qui explique le codage de l’opcode :
    c-jump.com/CIS77/CPU/x86

  18. #38
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Citation Envoyé par matrob72 Voir le message
    C’est vrais que c’est pas courant mais certain logiciel comme des simulateurs peuvent les dépasser de loin.
    Le dépasser de loin genre 8 Go ?

    Il y'a aucune raison qu'un exécutable fasse autant , surtout pour un simulateur 3D ou 80% partira dans la VRAM , du coup ça reste des données stocké en RAM pour rien...

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. creer un fichier lib à partir d'une DLL
    Par benoit70 dans le forum MFC
    Réponses: 12
    Dernier message: 28/09/2008, 22h58
  2. Génération DLL avec 2 fichiers .lib
    Par JeanPhi dans le forum MFC
    Réponses: 7
    Dernier message: 27/08/2007, 12h02
  3. [Pascal UCSD] Fichier .lib associé à une DLL
    Par nikhil dans le forum EDI
    Réponses: 3
    Dernier message: 25/07/2005, 16h02
  4. Fonctions inlines et fichiers .lib
    Par michhh dans le forum C++
    Réponses: 3
    Dernier message: 05/07/2005, 03h09
  5. Quel fichier .lib ?
    Par Neilos dans le forum DirectX
    Réponses: 10
    Dernier message: 27/01/2005, 19h16

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