Скажем, я определяю константу, например следующую, на ассемблере:
.data
SYS_EXIT = 60
.text
.globl _start
_start:
mov $SYS_EXIT, %eax
syscall
Выполняет ли ассемблер буквально эквивалент «найти-заменить» во время выполнения, чтобы заменить значение SYS_EXIT
на 60
? Другими словами, после подстановки программа становится следующей?
.text
.globl _start
_start:
mov $60, %eax
syscall
Если да, имеет ли значение, «где» я определяю переменную SYS_EXIT
? Например, нужно ли его помещать в определенный раздел, а если нет, то каково соглашение о том, куда его помещать? Например:
.data
SYS_EXIT = 60
------------------------
.rodata
SYS_EXIT = 60
------------------------
(start of file)
SYS_EXIT = 60
Наконец (возможно, отдельный вопрос), есть ли способ просмотреть все константы в gdb
? Я могу просмотреть вручную, зная метку, но не делая что-то вроде info va
:
>>> info va
All defined variables: [empty]
>>> p/d &SYS_EXIT
$1 = 60