извлекает данные из вершины стека.
|
|
СИНТАКСИС
| |
pop reg или mem
|
|
АРГУМЕНТЫ
| |
reg — регистры общего назначения.
mem — адрес памяти (например, [eax], [var + 4] или dword ptr [eax+ebx]).
|
|
ОПИСАНИЕ
| |
Данная инструкция используется для извлечения из вершины стека значений в регистры общего назначения EAX, EBX, ECX, EDX, ESP, EBP, ESI, EDI или в память по указанному адресу. В основном, она используется для возвращение результата работы функции (подпрограммы) или при использовании стека для хранения промежуточных значений данных из регистров.
Для архитектуры x86-32 разрядность регистров стека EBP и ESP устанавливается согласно конфигурации по-умолчанию, соответственно 32 разряда, поэтому pop в исходном коде ассемблера следует писать как 'popl'.
Пример взят с x86 Assembly Guide
В тоже время архитектура X86-64 является исключением в использовании операций со стеком, поэтому pop в исходном коде ассемблера следует писать как 'popq'
Пример взят с Assembler relaxation
При использовании в GCC экспериментальной 16-ти разрядной поддержки (только для x86 архитектуры) наряду с указанием в коде ассемблера директив .code16 или .code16gcc, устанавливаемой обычно опцией компилятора --code16gcc, следует писать как 'popw'. При этом, если используется директива .code16gcc нужно помнить, что в отличии от .code16 инструкции 'popa' и 'popf' будут иметь размерность 32 разряда.
| |