【问题标题】:what's the meaning of ENTRY statement in entry.S in Linux kernel for i386i386的Linux内核entry.S中的ENTRY语句是什么意思
【发布时间】:2014-02-21 10:40:57
【问题描述】:

例如在entry.S中

ENTRY(ret_from_fork)
    pushl %eax
    call schedule_tail
    GET_THREAD_INFO(%ebp)
    popl %eax
    jmp syscall_exit

那么 ENTRY in as language 的语法是什么? 我认为 as 的所有指令都以 .而且 ENTRY 看起来也不像宏 谁能告诉我ENTRY是什么?如果它是在 Linux 源代码中定义的,任何人都可以指出位置,或者它是否是语法,有人可以告诉我在哪里可以找到此用途的具体描述! 谢谢!

【问题讨论】:

    标签: linux assembly kernel i386


    【解决方案1】:

    不知道你为什么说它看起来不像宏,因为这正是宏的样子。实际上它是include/linux/linkage.h 中定义的宏,如下:

    #ifndef ENTRY
    #define ENTRY(name) \
        .globl name ASM_NL \
        ALIGN ASM_NL \
        name:
    #endif
    

    【讨论】:

    • 我认为它不是宏的原因是我认为在汇编中没有预处理,但是 .S 后缀告诉 gcc 在编译不支持 as 的程序集之前使用预处理跨度>
    【解决方案2】:

    我认为这是一个汇编指令。 据我所知,我们使用 Keil 汇编器时会使用 ENTRY 汇编器指令。 这实际上是应用程序的入口点。

    当我们使用 GNU 汇编器时,我们在汇编代码中拥有 _start 或 _main 入口点的方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-29
      • 2012-02-08
      • 1970-01-01
      • 1970-01-01
      • 2018-11-23
      • 1970-01-01
      • 2019-07-28
      相关资源
      最近更新 更多