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 :

Que veut dire le symbole "." ?


Sujet :

Assembleur

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Que veut dire le symbole "." ?
    Salut à tous,
    Je suis archi-nouveau en assembleur, et je suis un tutoriel de ce site, concernant le GNU as. ( https://asm.developpez.com/cours/gas/ )
    Mais lors de ma lecture, j'ai buté sur un point (c'est le cas de la dire).
    Voici le code "Hello world!" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    .data
    msg :               .asciz "Hello, World !\n"
    len = . - msg
                        .bss
                        .text
                        .global _start
     
    _start :
                         movl $msg,%ecx
                         movl $len,%edx
                         movl $1,%ebx
                         movl $4,%eax
                         int  $0x80           # appel système
     
    exit :
                         movl $0,%ebx
                         movl $1,%eax
                         int  $0x80
    Et voici la ligne qui me pose problème :
    Voilà ce que je lis :
    "taille chaîne caractères est égale à l'adresse suivant son dernier caractère moins la chaîne de caractère."

    Je sais que c'est erroné, mais comment le lire ? Comme ça ?

    "taille chaîne caractères est égale à l'adresse suivant son dernier caractère moins l'adresse du premier octet de la chaîne."
    En gros, si mon message commence à l'adresse 4 et finit à l'adresse 8, je fais taille = 9 - 4 ?

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    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 400
    Points : 23 780
    Points
    23 780
    Par défaut
    Bonjour,

    En fait, il faut lire « l'adresse courante moins l'adresse de la chaîne ». Et par « adresse de la chaîne », on entend implicitement celle de son premier caractère. Donc la différence des deux te donne sa longueur.

    D'une manière générale, une étiquette placée à gauche d'une directive ou d'une instruction se voit automatiquement associée à l'adresse courante, sauf si on la définit explicitement.

    Les noms pointés (.global, .bss, .asciiz…) en revanche, n'existent pas partout et dans le contexte qui nous intéresse, il semblerait qu'ils servent à définir les ressources et les mots-clés réservés par le compilateur. En particulier, « .bss, .text, .data, .rodata » servent à définir les différentes sections d'un exécutable mais tous les formats ne les prennent pas en charge. Cela va donc être assez dépendant de la programmation système même si on les retrouve assez fréquemment puisqu'au final, tous les systèmes doivent résoudre les mêmes problèmes. En revanche, « .asciiz » sert à indiquer une chaîne de caractère qui doit être terminée par un caractère nul (code x00) car c'est le format qu'utilise entre autre le langage C ainsi que beaucoup de plateformes.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AS] Que veut dire AND
    Par jbidou88 dans le forum Flash
    Réponses: 2
    Dernier message: 31/05/2006, 11h21
  2. que veut dire (nrow >= 6) && (~nrow&0x01)
    Par gronaze dans le forum C
    Réponses: 12
    Dernier message: 24/03/2006, 15h00
  3. [WD9] Que veut dire AGL?
    Par afrikha dans le forum WinDev
    Réponses: 4
    Dernier message: 24/10/2005, 11h15
  4. Que veut dire ce symbole?
    Par tlemcenvisit dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 24/06/2005, 22h25
  5. Que veut dire "volatile" devant une variable ?
    Par altahir007 dans le forum C
    Réponses: 4
    Dernier message: 23/06/2004, 15h47

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