小编Pau*_*aul的帖子

从全局内联汇编调用静态函数

我试图定义一个没有任何序言/结尾的函数,一个“到达地址”,以便它可以调用由编译器正确管理的内部函数(对调用者清除环境有用)。

我发现可以使用内联汇编程序创建全局标签,但是在同一文件中调用另一个函数时遇到问题。当我按此处列出的顺序编译代码时,我收到警告:

警告:“ handle_vmexit” [/代码/超级/内核/hyper.ko]未定义!

当我删除静态修饰符时,没有任何问题。

所以我的问题是,为什么嵌入式程序集在静态时无法与handle_vmexit链接,以及如何使其称为静态handle_vmexit。

以下是相关代码:

static void handle_vmexit(void){
    ...
}

__asm__(".handle_vmexit: \n\t"
    "call handle_vmexit"
);
Run Code Online (Sandbox Code Playgroud)

c assembly gcc inline-assembly

5
推荐指数
1
解决办法
56
查看次数

标签 统计

assembly ×1

c ×1

gcc ×1

inline-assembly ×1