当前位置: 技术问答>linux和unix
请问这是什么意思?关于linux 内核源码!
来源: 互联网 发布时间:2015-07-04
本文导语: 在linux 内核源码的引导部分有很多汇编语句,其中有一行如下: #include /*引入.h文件*/ #include .globl startup_32 /*就是这行*/ startup_32: cld cli movl $(__KERNEL_DS),%eax movl...
在linux 内核源码的引导部分有很多汇编语句,其中有一行如下:
#include /*引入.h文件*/
#include
.globl startup_32 /*就是这行*/
startup_32:
cld
cli
movl $(__KERNEL_DS),%eax
movl %eax,%ds
movl %eax,%es
movl %eax,%fs
movl %eax,%gs
lss SYMBOL_NAME(stack_start),%esp
xorl %eax,%eax
1: incl %eax # check that A20 really IS enabled
movl %eax,0x000000 # loop forever if it isn't
cmpl %eax,0x100000
je 1b
上面的.globl startup_32是什么意思?
#include /*引入.h文件*/
#include
.globl startup_32 /*就是这行*/
startup_32:
cld
cli
movl $(__KERNEL_DS),%eax
movl %eax,%ds
movl %eax,%es
movl %eax,%fs
movl %eax,%gs
lss SYMBOL_NAME(stack_start),%esp
xorl %eax,%eax
1: incl %eax # check that A20 really IS enabled
movl %eax,0x000000 # loop forever if it isn't
cmpl %eax,0x100000
je 1b
上面的.globl startup_32是什么意思?
|
.globl startup_32
表示全局符号,你可以将其看成像C语言中的函数名一样的东东。
表示全局符号,你可以将其看成像C语言中的函数名一样的东东。
|
startup_32()函数由两个。第一个是进入保护模式后执行的第一个汇编程序代码。主要任务是
关中断,测试A20是否被激活,标志寄存器eflags置为0,用0填充内核未初始化的数据区等等
第2个是为linux的进程0建立执行环境。
关中断,测试A20是否被激活,标志寄存器eflags置为0,用0填充内核未初始化的数据区等等
第2个是为linux的进程0建立执行环境。