Linux 内核使用哪个程序集?真的是NASM吗?

Gue*_*OCs 2 linux assembly nasm

我正在阅读https://0xax.gitbooks.io/linux-insides/content/Booting/linux-bootstrap-1.html并且它读取一些程序集,例如

    .section ".reset", "ax", %progbits
    .code16
.globl    _start
_start:
    .byte  0xe9
    .int   _start16bit - ( . + 2 )
    ...
Run Code Online (Sandbox Code Playgroud)

有一行他是这样编译的

nasm -f bin boot.nasm && qemu-system-x86_64 boot
Run Code Online (Sandbox Code Playgroud)

所以我认为它是用于 linux 的 NASM 程序集。我去发现了https://asmtutor.com/#,它说它使用 NASM 程序集用于 linux。然而,这不是一回事。仅举几例:linux内核的用途.section,而不是SECTION.globl不是的global,我不承认什么.byte.int等做。

那么linux使用哪个程序集,我在哪里可以学习它?

S E*_*S E 5

Linux 内核使用 GAS 汇编器(GNU Assembler),它是 GCC 的一部分。您可以在此处找到有关它的参考文档。

如果您已经对装配有了基本的了解,您可以在此处找到对 GAS 的非常全面的介绍。

至于.byteand .int.byte将跟随它的 1 个或多个 1 字节值放入当前汇编器地址的内存中,并.int执行相同的操作,但用于 32 位整数而不是字节。