我对Linux0.00中 head.s 的理解和注释

    xiaoxiao2021-03-25  87

    转自:http://www.cnblogs.com/SuperBlee/p/4095124.html

    ?21, #  head.s contains the 32-bit startup code. #  head.s 是32位的启动代码

    #  Two L3 task multitasking. The code of tasks are in kernel area, # 有两个L3(Level 3,即第三特权级,IA32提供给用户0-3,四个特权级,但是Linux0.11只使用了 # 0和3这两个特权级,表示用户态程序和内核态程序,内核-kernel)的多任务

    #  just like the Linux. The kernel code is located at 0x10000. # ……内核代码在0x10000,在boot.s中已经确定了呦~

    #大家可能发现boot.s和head.s的代码有一点点不一样,这是因为boot.s使用的是as86汇编器 #而head.s使用的是GNU as汇编器,具体表现在 #    1~movl等操作的出现:当然还是mov的意思,l表示双字,w表示单字,b表示字节 #    2~movl等操作的源操作数和目的操作数位置,源在前而目的在后,与boot.s中的mov操作是相反的 #    3~立即数前必须加$,寄存器前必须加% #    4~待续

    .code32 # CODE32伪指令通知编译器,其后的指令序列为 32 位的 ARM 指令 SCRN_SEL    = 0x18 TSS0_SEL    = 0x20 LDT0_SEL    = 0x28 TSS1_SEL    = 0X30 LDT1_SEL    = 0x38

    .global startup_32 .text #.text表示文本段,通常包含可执行代码 startup_32:     movl $0x10,

    转载请注明原文地址: https://ju.6miu.com/read-35721.html

    最新回复(0)