Récemment, j'ai commencé l'assemblage d'apprentissage par un canal youtube et avait une question sur la déclaration d'une étiquette dans la section .dataQuelle est la signification pour le test db « Bonjour tout le monde » dans l'assemblage pour l'architecture X86 sur le système Linux
Lorsque nous écrire quelque chose comme: test db "bonjour monde", le lable "test" quelque chose comme pointeur en langage progamming? (ce qui signifie qu'il contient l'adresse mémoire du premier élément dans le texte "hello world")
quand nous écrivons: test mov rsi, cela signifie-t-il que nous jetons l'adresse de "hello world" dans le registre rsi?
Une autre question concerne l'utilisation de [], quel est le sens de l'écriture [Test]? Est-ce que ça veut dire quelque chose comme déréférencer en C? Tout comme derefernce le test de pointeur et que d'obtenir la lettre "t" qui est la première lettre dans "hello world"?
Je serai vraiment apprécier pour tout responsable de ma question.
Pour une bonne réponse, affichant le code source du programme que vous faites référence serait utile. – fuz
'test' est l'adresse de''h''. Full '" hello world "' sont plusieurs octets, occupant plusieurs adresses en mémoire. BTW, IMO regarder YouTube pour des choses comme l'apprentissage ASM doit être beaucoup plus lent que de lire un bon livre à ce sujet (ce qui expliquerait probablement tout cela bien). Je serais très méfiant sur la qualité de tout tutoriel ASM sous forme de vidéo, juste parce que cette forme ne peut pas couvrir suffisamment de détails (mais peut être un début). – Ped7g
Je pense que c'est une bonne cible en double; il semble couvrir ce que vous demandez. L'équivalent C de 'test: db 'bonjour monde'' est 'test de char [] = {'h', 'e', ..., 'd'};' (sans aucun octet de fin). Ou si c'est dans 'section .rodata', alors' const char test [] = ... '. –