Каково значение адреса памяти, который меньше 12 шестнадцатеричных цифр на 64-разрядном компьютере?
Например, когда я запускаю gdb в простой программе сборки и запускаю (gdb) info frame
, я получаю:
Stack level 0, frame at 0x7fffffffd970:
rip = 0x40052f in main (file.s:11); saved rip = 0x7ffff7a2d830
source language asm.
Arglist at 0x7fffffffd960, args:
Locals at 0x7fffffffd960, Previous frame's sp is 0x7fffffffd970
Saved registers:
rbp at 0x7fffffffd960, rip at 0x7fffffffd968
Первая часть второй строки rip = 0x40052f in main (file.s:11)
Я считаю, что указывается значение указателя инструкции при вызове info frame
.Но почему адрес памяти не содержит 12 шестнадцатеричных цифр?
Кроме того, если я наберу (gdb) x 0x7fffffffd968
(который я ожидаю равным 0x7ffff7a2d830
), я получу:
0x7fffffffd968: 0xf7a2d830
это означает, что любой адрес памяти, содержащий менее 12 шестнадцатеричных цифр, содержит неявный 7ff...
?