К оглавлению

ИНСТРУКЦИЯ pop
 
извлекает данные из вершины стека.
 
СИНТАКСИС
 
 
 
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'.
 
 
pop edi # извлечение элемента из вершины стека
# в регистр %EDI
pop [ebx] # извлечение элемента из вершины стека
# в адрес памяти четырех первых байтов
# относительно адреса в регистре EBX
 
В тоже время архитектура X86-64 является исключением в использовании операций со стеком, поэтому pop в исходном коде ассемблера следует писать как 'popq'
 
 
# Восстановление используемых регистров
pushq %rbx
pushq %r14
pushq %rbp
 
При использовании в GCC экспериментальной 16-ти разрядной поддержки (только для x86 архитектуры) наряду с указанием в коде ассемблера директив .code16 или .code16gcc, устанавливаемой обычно опцией компилятора --code16gcc, следует писать как 'popw'. При этом, если используется директива .code16gcc нужно помнить, что в отличии от .code16 инструкции 'popa' и 'popf' будут иметь размерность 32 разряда.
 
.code16gcc
.
.
.
popw %bx# Восстанов. регистра %BX
 
 

К оглавлению



Сайт создан в системе uCoz