Нет, это непосредственное значение.pushq
помещает значение в стек, который может быть регистром, но вы обнаружите, что они обозначены операндами, такими как %rbx
.
$0x1a
являетсяНепосредственное значение - вы можете сказать это также по длине этой инструкции (пять байтов, от x+6
до x+10
).Команда pushq
может выдавать регистр, содержимое памяти (64 бита) или 32-битное непосредственное значение (знак расширяется до 64 бит).
В этом случае пять байтов являются кодом операции0x68
вместе с 32-битным значением для нажатия.Если бы вы исследовали память, она, вероятно, выглядела бы как 0x68 0x1a 0x00 0x00 0x00
.
И не обманывайтесь этим кодом, это вовсе не "настоящий" вызов read
.Это заглушка, используемая для исправления ссылок во время выполнения, когда разделы кода могут совместно использоваться процессорами, даже по разным базовым адресам.
PLT - это небольшая заглушка для каждого процесса, которая переходит к реальному общему коду, которыйпервый раз, исправляя себя в процессе, чтобы прыгнуть прямо туда в будущем.См. здесь для объяснения этого процесса.