pop
загружает данные из памяти (в стеке - указывает ss: [esp]) в регистр, т.е. использует процессор load unit, в то время как add esp
не использует load load.Процессоры, начиная с Pentium Pro, выполняют Внеочередное выполнение , т.е. выполняют за цикл столько инструкций, сколько имеется внутренних шлюзов (единиц), если эти инструкции могут выполняться одновременно, и, при необходимости, повторноупорядочивает порядок инструкций для полного использования блоков.
Поскольку большинство процессоров имеют только две загрузочные единицы, если вам не нужны данные из стека (т.е. вы хотите просто пропустить данные), лучшеadd esp
, потому что это операция только для регистра и не использует загрузочную единицу, поэтому ваш процессор сможет использовать загрузочную единицу для чего-то другого в это время.