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 :

Compréhension de TIMES


Sujet :

Assembleur

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2005
    Messages : 119
    Points : 106
    Points
    106
    Par défaut Compréhension de TIMES
    Bonjour à tous,

    J'ai un peu du mal à comprendre certaine chose avec la fonction times.

    Bon j'ai compris ce qu'elle fait hein c'est pas ça et je comprend tout autant quand on à des instruction de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    times 510 - ($-$$) db 0
    Mais là où je ne comprend pas c'est par exemple ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    buffer db 'hello, world'
            times 64-$+buffer db ' _'
    comment cela peut donner comme résultat hello, world____________________________________________________ ?

    en gros 64 - la taille de la string et remplir avec _

    car 64 - $ (adresse de la ligne courante) + buffer pour moi ça ne renvoie pas le nombre de byte de la chaine de caractère ... surtout si on fait +. D'autant que l'adresse de la ligne courante est déjà a une ligne en plus de celle du buffer...

    Dans le cas plus haut ok adresse de la ligne courante - adresse de début de l'application = la taille du programme.

    Bref je ne sais pas si vous m'avez compris, j'espère , mais en gros je ne vois pas comment 64-$+buffer peut renvoie 52...

    Merci d'avance pour vos retours
    ++

    deck_bsd

    /*************************************/
    [http://dckapps.azurewebsites.net/]

  2. #2
    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
    Ton probleme est expliqué très mal , tu dis :

    J'ai un peu du mal à comprendre certaine chose avec la fonction times.
    times pour moi ici est une macro/define pas une fonction.

    Bref je ne sais pas si vous m'avez compris, j'espère , mais en gros je ne vois pas comment 64-$+buffer peut renvoie 52...
    si $ (adresse de la ligne courante) alors il faudrait que tu sois a la ligne 24 donc 62-24+12 = 52 non ?
    On considérant que buffer donne bien la taille du buffer et non son adresse.

    Mais ton probleme n'est pas vraiment lié au langage assembleur , mais au 'compilateur' , peut être qu'il faudrait lire la doc pour savoir ce que renvoie exactement ces valeurs

    je pense que d'autre personne t'aideront mieux que moi , je ne suis pas un spécialiste de Nasm (si c'est ce que tu utilise).

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 10
    Points : 19
    Points
    19
    Par défaut
    Je vois ton problème :


    si tu fais 64-($-buffer), on est d'accord que tu obtiens 64 moins la taille de ton buffer, donc effectue le calcul en enlevant les parenthèses:
    tu aura 64-$+buffer, c'est simple .

    au passage $ désigne l'adresse de la ligne actuelle et $$ désigne l'adresse de la section ou du segment dans lequel tu te trouves !!



    a+

Discussions similaires

  1. [RAM] Compréhension des timings
    Par stoner dans le forum Composants
    Réponses: 4
    Dernier message: 16/01/2014, 20h57
  2. mise à jour de champs time (interbase)
    Par pram dans le forum XMLRAD
    Réponses: 6
    Dernier message: 04/03/2003, 10h25
  3. calcul entre 2 champs time
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 19/02/2003, 10h12
  4. Problème de compréhension des ensembles
    Par Cornell dans le forum Langage
    Réponses: 6
    Dernier message: 07/02/2003, 22h07
  5. [Kylix] Kylix 3 C++ OE et fichier time.h
    Par Max13 dans le forum EDI
    Réponses: 7
    Dernier message: 30/10/2002, 14h55

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