在Linux内核中用于i386的entry.S中ENTRY语句的含义是什么

时间:2014-02-21 10:40:58

标签: linux assembly kernel i386

例如在entry.S中。

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

那么ENTRY的语法是什么? 我认为所有指令都是从一开始的。 ENTRY也看起来不像一个宏 任何人都可以告诉我有关入口是什么?如果它在Linux源代码中定义,任何人都可以指示位置或者它是否是语法,有人可以告诉我在哪里可以找到此用途的具体描述! 谢谢!

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:0)

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

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