Инструкции делают только то, что говорят в руководстве Intel / AMD, в разделе «Операция».
sub $12, %esp
ничем не отличается от sub $12, %eax
. SUB изменяет регистр назначения (и EFLAGS с кодами условий), это all .
И EIP переходит к следующей инструкции, как и всегда.Обычно не упоминается для инструкций, не связанных с ветвями, но выполнение любой инструкции продвигает EIP.
Никакого другого магического эффекта на архитектурное состояние нет. Это язык ассемблера.Все просто байты в памяти или регистры.Все, что вы хотите, чтобы происходило с этими байтами, вы должны сделать так, чтобы это происходило самостоятельно, с помощью инструкций по запуску процессора.
Если вы используете инструкцию, подобную leave
, тогда да, это изменит как ESP, так и EBP,эквивалентно
mov %ebp, %esp
pop %ebp
Потому что именно так сказано в руководстве по leave
.