movq
(если вы говорите о x86) - это ход четырех слов (64-битное значение).Эта конкретная инструкция:
movq (%rsp), %rsp
очень похож на код, который будет проходить через стековые фреймы.Эта конкретная инструкция захватывает четверное слово, на которое указывает текущий указатель стека, и загружает его в указатель стека, перезаписывая его.
В качестве примера, эта последовательность кода (основана на реальном коде, а в Intel, а неФормат AT & T) будет непрерывно загружать указатель стека из его содержимого до тех пор, пока значение 16 байт за ним не станет равным 0.
576 cmpq [rsp+0x10],0x0
582 jz 594
588 movq rsp,[rsp]
592 jmp 576
594 ...
Возможно, это может быть не код обхода стека, но это будет необычно, посколькуподзаголовок указателя стека для чего-то, для чего он обычно не используется.
Это необычно тем, что перемещение кадров стека обычно включает указатель стека и базовый указатель, но обычно это просто для повышения на один уровень (т.е. возврат из функции).
Для кода, показанного выше, где вы хотите подняться на несколько уровней, возможно, быстрее использовать указатель стека, пока вы не доберетесь до нужного места, а затемтогда отключите базовый указатель (соглашения о вызовах будут часто выдвигать текущий базовый указатель передили изменив его, так что простой щелчок восстановит старое значение).