如何铿锵英特尔组件创建函数中的自有品牌?

问题描述 投票:0回答:1

我怎样才能创造只能从定义函数中使用汇编函数的私人标签,但不能从其它功能例如使用跳转目标?

在下面的例子中,我不想.private_label_main到达。然而,它编译就好使用clang -S -masm=intel example.s -o example

我曾经看到过在NASM这个功能,但现在我已经决定改用锵。

奖励:在哪里可以查看这些信息了自己?我已经做了一些研究自己。

.intel_syntax noprefix
.globl _main

.text

_f:
push rbp 
mov rbp, rsp
.private_label:
mov rsp, rbp
pop rbp
ret

_main:
push rbp 
mov rbp, rsp
jmp .private_label
mov rax, 0x5
mov rsp, rbp
pop rbp
ret 
assembly x86 64bit
1个回答
3
投票

未标记.global标签从其他模块访问。与.L开始标签还没有进入符号表。

有没有办法让一个标签从同一模块无法访问,但你可以得到与编号的标签类似的效果。 10个标签09只能与语法0b访问的“前一个标签0”和0f为“下一个标签0。”如果你周围的标签相同数量的两个标签,它是不可以参考它从外面。例如:

# the label is inaccessible here
0:

# the label is accessible here using 0f
    jmp 0f

# our label
0:  ud2

# the label is accessible here using 0b

0:

# the label is inaccessible here

请注意,没有什么能够阻止别人​​从只是猜测被分配您的标签结束地址和跳跃那里。我不知道你想达到什么。

对于进一步的文档,请参考GNU汇编手册。随LLVM分布汇编器支持此功能的子集。请注意,如果你是在MacOS编程,因为它似乎,正在使用的汇编可能是MacOS的汇编。请参考手册页(1)有关此工具的详细信息。

© www.soinside.com 2019 - 2024. All rights reserved.