Почему поп берет параметр в блоке?

popl   %ebp

Это кажется %ebp является ненужным потому что pop для операции стека не нужен параметр.

Почему это имеет смысл?

7
задан Peter Cordes 22 August 2019 в 16:26
поделиться

3 ответа

Из http://www.cs.virginia.edu/~evans/cs216/guides/x86.html

pop ] - Извлечь стек

Команда извлечения удаляет 4-байтовый элемент данных из вершины аппаратно поддерживаемого стека в указанный операнд (т. Е. Регистр или ячейку памяти). Сначала он перемещает 4 байта, расположенные в ячейке памяти [SP], в указанный регистр или ячейку памяти, а затем увеличивает SP на 4.

Синтаксис
pop
pop

Примеры
pop edi - вставить верхний элемент стека в EDI.
pop [ebx] - вставить верхний элемент стека в память в четырех байтах, начиная с ячейки EBX.

Еще одна хорошая ссылка - http://en.wikibooks.org/wiki/X86_Assembly , и она доступна в форме PDF .

9
ответ дан 6 December 2019 в 09:59
поделиться

Чтобы развернуть ответ Андрея, помимо увеличения указателя стека над выталкиваемым элементом, вытянутый элемент также копируется в адрес назначения или регистр.

Приведенная вами инструкция более или менее эквивалентна двум инструкциям (синтаксис Intel)

add esp, 4               # increment the stack pointer
mov ebp, [esp - 4]       # load what ESP was pointing to

, который, я думаю, заключен в синтаксисе att (gas)

add $4, %esp
mov -4(%esp), %ebp

Конечно pop не изменяет ФЛАГИ (представьте, что вы выполняете add с помощью LEA), и это не прерывается между загрузкой и добавлением.

Для особого случая pop esp выполнение второй загрузки в псевдокоде воспроизводит фактическое задокументированное поведение приращения перед данными из старого top- расположение из стека записывается в ESP. И выполнения приращения перед вычислением адреса для всплывающего окна назначения памяти с использованием % esp как части режима адресации, например popl 12 (% esp,% edx, 4)

4
ответ дан 6 December 2019 в 09:59
поделиться

этот параметр устанавливает место назначения.

6
ответ дан 6 December 2019 в 09:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: