movq (en supposant que vous parlez x86) est un mouvement d'une quadword (valeur 64 bits). Cette instruction particulière:
movq (%rsp), %rsp
ressemble beaucoup à du code qui marchera à travers des frames de pile. Cette instruction particulière attrape le quadword pointé par le pointeur de pile actuel, et la charge dans le pointeur de pile, de l'écraser.
Par exemple, cette séquence de code (basé sur le code réel, et en Intel plutôt que AT&T format) sera continuellement charger le pointeur de pile de son contenu jusqu'à ce que la valeur de 16 octets au-delà, il est de 0.
C'est possible, il peut ne pas être pile-cadre de marche de code, mais c'est inhabituel, car il serait suborning le pointeur de pile pour quelque chose, il n'est généralement pas utilisé pour.
Il est inhabituelle en ce que le déplacement en haut de la pile des images implique généralement le pointeur de pile et de la base de pointeur, mais c'est habituellement juste pour monter d'un niveau (c'est à dire, un retour de fonction).
Pour le genre de code qui s'affiche au-dessus de l'endroit où vous souhaitez déplacer vers le haut de multiples niveaux, il est probablement plus juste d'utiliser le pointeur de pile jusqu'à ce que vous obtenez lorsque vous avez besoin pour être, alors pop le pointeur de la base, puis (conventions d'appel pousseront souvent la base actuelle du pointeur avant de le changer, de sorte qu'un simple pop va récupérer l'ancienne valeur).
C'est un 64 bits, la valeur de mov. Ses 64 bits en raison de "q" dans movq qui est quad et quad est de 64 bits.
Il ne peut y avoir d'autres exemple comme movl dans laquelle l est de 32 bits.
mais dans le cas de movq (%rsp), %rpr à l'aide de ATT syntaxe..
La movq (%rsp), %rsp -> movq est appelé opcode (%rsp) est appelé la source ou de la src et de %rsp est appelé la destination ou de l'heure d'été.
ce qu'il fait est qu'il regarde vers le haut dans le registre %rer reçoit sa valeur et va à la mémoire de [la parenthèse "()" signifie aller en valeur de la mémoire] de cette valeur et ensuite il l'attribue à %rpr.
Alors que les deux sont même registre, la différence est que la valeur de %rer des changements.
Par exemple:disons %rer a de la valeur 22. Mais la mémoire de l' %rsp est de 30.
À l'aide de cette instruction movq (%rsp), %rpr
la nouvelle valeur de %rsp est de 30. De nouveau, car (%rsp) obtient la valeur de %rsp qui est supposer 22 puis (%rsp) va à la valeur de la mémoire 30, puis il l'attribue à %rsp sur la destination, qui est %rsp lui-même.
movq
(en supposant que vous parlez x86) est un mouvement d'une quadword (valeur 64 bits). Cette instruction particulière:ressemble beaucoup à du code qui marchera à travers des frames de pile. Cette instruction particulière attrape le quadword pointé par le pointeur de pile actuel, et la charge dans le pointeur de pile, de l'écraser.
Par exemple, cette séquence de code (basé sur le code réel, et en Intel plutôt que AT&T format) sera continuellement charger le pointeur de pile de son contenu jusqu'à ce que la valeur de 16 octets au-delà, il est de 0.
C'est possible, il peut ne pas être pile-cadre de marche de code, mais c'est inhabituel, car il serait suborning le pointeur de pile pour quelque chose, il n'est généralement pas utilisé pour.
Il est inhabituelle en ce que le déplacement en haut de la pile des images implique généralement le pointeur de pile et de la base de pointeur, mais c'est habituellement juste pour monter d'un niveau (c'est à dire, un retour de fonction).
Pour le genre de code qui s'affiche au-dessus de l'endroit où vous souhaitez déplacer vers le haut de multiples niveaux, il est probablement plus juste d'utiliser le pointeur de pile jusqu'à ce que vous obtenez lorsque vous avez besoin pour être, alors pop le pointeur de la base, puis (conventions d'appel pousseront souvent la base actuelle du pointeur avant de le changer, de sorte qu'un simple pop va récupérer l'ancienne valeur).
OriginalL'auteur paxdiablo
C'est un 64 bits, la valeur de mov. Ses 64 bits en raison de "q" dans movq qui est quad et quad est de 64 bits.
Il ne peut y avoir d'autres exemple comme movl dans laquelle l est de 32 bits.
mais dans le cas de movq (%rsp), %rpr à l'aide de ATT syntaxe..
La movq (%rsp), %rsp -> movq est appelé opcode (%rsp) est appelé la source ou de la src et de %rsp est appelé la destination ou de l'heure d'été.
ce qu'il fait est qu'il regarde vers le haut dans le registre %rer reçoit sa valeur et va à la mémoire de [la parenthèse "()" signifie aller en valeur de la mémoire] de cette valeur et ensuite il l'attribue à %rpr.
Alors que les deux sont même registre, la différence est que la valeur de %rer des changements.
Par exemple:disons %rer a de la valeur 22. Mais la mémoire de l' %rsp est de 30.
À l'aide de cette instruction movq (%rsp), %rpr
la nouvelle valeur de %rsp est de 30. De nouveau, car (%rsp) obtient la valeur de %rsp qui est supposer 22 puis (%rsp) va à la valeur de la mémoire 30, puis il l'attribue à %rsp sur la destination, qui est %rsp lui-même.
OriginalL'auteur bmm