如何从数据部分获取最后一个值的地址?

How to Get Address of Last Value From Data Section?

我正在使用 'as' 汇编程序和以下 .section .data

items:
.long 5,6,8,10

如何获取值为 10 的地址?

您可以使用汇编程序指令 . 来获取您当前的位置地址,或者您可以使用类似 lea items(,%rax, 4), %rdi 的方式将项目数组的第 %rax 个位置地址加载到 %rdi.

如何使用 . ?

点符号(独立)指的是当前地址,当 GAS 到达指向 assemble 的那个点时。其他 assemblers 使用“$”字符。

示例:

...
.data
...
items:  .long 5,6,8,10      # Every ".long" is 4 bytes long
lastitem = . - 4            # https://sourceware.org/binutils/docs/as/Dot.html#Dot
...

.text
...
    movl (lastitem), %eax
...