满意答案
HM3734840
2013.07.13
采纳率:56% 等级:13
已帮助:12633人
其 kernel 基本上不是用汇编写的,而是 C。
#############################
[linux-2.6.10]$ cd kernel/
[kernel]$ find | grep -i \\.S
[kernel]$
############################
正如上面的命令执行结果可以看出, Linux 2.6.10 内核中 kernel 文件夹里边不包含任何汇编语言文件( .S 文件)。
Linux 把架构相关的文件都检出的
############################
[kernel]$ cd ../arch/
[arch]$ ls
alpha cris ia64 m68knommu ppc sh sparc64 x86_64
arm h8300 m32r mips ppc64 sh64 um
arm26 i386 m68k parisc s390 sparc v850
[arch]$
############################
在 arch 文件夹里边就才放着架构相关的东西了。有很多架构,我们桌面机一般用 i386 的架构。
###########################
[arch]$ cd i386/
[i386]$ find | grep -i \\.S
./boot/bootsect.S
./boot/compressed/head.S
./boot/compressed/vmlinux.scr
./boot/edd.S
./boot/install.sh
./boot/setup.S
./boot/video.S
./crypto/aes-i586-asm.S
./kernel/acpi/wakeup.S
./kernel/efi_stub.S
./kernel/entry.S
./kernel/head.S
./kernel/trampoline.S
./kernel/vmlinux.lds.S
./kernel/vsyscall-int80.S
./kernel/vsyscall-sigreturn.S
./kernel/vsyscall-sysenter.S
./kernel/vsyscall.S
./kernel/vsyscall.lds.S
./lib/checksum.S
./lib/getuser.S
./math-emu/div_Xsig.S
./math-emu/div_small.S
./math-emu/mul_Xsig.S
./math-emu/polynom_Xsig.S
./math-emu/reg_norm.S
./math-emu/reg_round.S
./math-emu/reg_u_add.S
./math-emu/reg_u_div.S
./math-emu/reg_u_mul.S
./math-emu/reg_u_sub.S
./math-emu/round_Xsig.S
./math-emu/shr_Xsig.S
./math-emu/wm_shrx.S
./math-emu/wm_sqrt.S
./power/swsusp.S
[i386]$
###########################
这里边才有汇编语言文件,用於 i386 的共有
###########################
[i386]$ find | grep -i \\.S | wc -l
36
[i386]$
###########################
嗯,才36个汇编文件。一部分是 boot 代码,还有系统调用及中断及异常的接口代码,剩下的大部分是协处理器模拟代码。
没人会为了速度而全用汇编写内核的(我除外,不过我只是做了个实模式的单任务的简单系统,所以才用纯汇编)。
桌面版Windows能够支持的架构不多,i386,amd64,ia64。其中 ia64 几乎已经放弃。amd64又兼容i386,所以桌面版Windows的移植性需求不高。但它的内核也几乎都是 C 写成的。看看 windows2000 泄露出来的代码就知道。
具体哪部分,我不是说了么:
嗯,才36个汇编文件。一部分是 boot 代码,还有系统调用及中断及异常的接口代码,剩下的大部分是协处理器模拟代码。
而且文件的列表都给出了,你没看么?
00分享举报