在NASM
汇编程序中,可以使用.
前缀声明本地标签。
- 那么,本地标签(以及所有汇编程序中的标签)的地址是什么?它是相对的还是绝对的,还是取决于用途?
我问是因为有些功能让我感到困惑。这是一个示例代码:
ORG 0x400000 ;origin of address for labels
start: ;address here should be 0x400000
..... ;some code here
.loop ;local label
..... ;some code here
jmp short .loop ;<------- address is not taken as absolute
jmp short start
如果我使用一些普通标签(如start
)进行引用并将其与lea
指令一起使用,则地址将计算为相对于原点的普通绝对地址。
- 但是,如果我使用标签并将其与
short
(如最后一行)一起使用,会发生什么?跳转的偏移量是从绝对地址计算的吗?
我问这一切是因为我的代码中有本地标签(.LNXYZ
随机生成),并且我需要制作地址列表(来自该标签),其中包含包含跳转的绝对地址的 4 字节元素。这样的事情可能吗,还是我必须使用普通标签?有什么指令吗?