我在一些代码中注意到了我不熟悉的以下访问模式,并想知道它是否有一个名称:
.data
.foo quad 0
.text
...
movl %edx, foo +4
很明显它做了什么或者应该做什么,但是不符合我习惯的寻址模式的语法(立即,直接,索引或间接(从基数位移到-4)(foo) ))寻址)。
它有名字吗?它的位移(或基础)术语是否有限制?
答案 0 :(得分:3)
那将是绝对的解决方案。地址foo+4
在链接时已知,因此可以直接编码到指令中。
例如,这个:
.text
movl %edx, foo+4
foo:
产生以下objdump
输出:
Disassembly of section .text:
0000000000000000 <.text>:
0: 89 14 25 0b 00 00 00 mov %edx,0xb
0000000000000007 <foo>:
如您所见,地址0x0000000B
已编码到指令中,该地址等于foo
(7)加4的地址。