【发布时间】:2020-09-16 20:16:28
【问题描述】:
假设我在 asm 中定义了一个常量,如下所示:
.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
【问题讨论】:
标签: assembly x86 gnu-assembler