㈠ 编译grub2-mips启动器,制作 MIPS 架构的 grubmips64el.efi
一. 实验环境
二. grub 介绍
三. 在x86架构下,对grub1 与 grub2 引导阶段剖析(再去结合龙芯PMON、昆仑固件、UEFI固件分析启动过程,因为龙芯固件已包含 bootloader 功能,对比分析)
四. 分区类型选择(X86情况下)
五. 制作 grubmips64el.efi
九. 参考资料
㈡ 龙芯为什么采用了mips指令集,而没有使用arm指令集
不仅仅是MIPS的架构完整性 与授权较宽松问题 还有一个重要因素—程序链
虽然如今Arm吵得火,Arm V8(64bit)更火。但是ARM V8还是一个新生的指令集组合(2011年发布,数据来自维基网络)。相对应的系统内核,编译器,支持库方面还不太完整(当然,跟进速度很快)还需要一段时间才能完善。
而MIPS不同,正如@破布 所说 。MIPS来自上世纪90年代的微架构大混战时期。 MIPS是世界上最早商业化的64位架构之一(虽然现在MIPS已经没落,被收购)。但是作为历史积累。MIPS64不仅仅有完善的微架构设计,而且还有较为完整的软件链支持。
我记得没错的话,龙芯2B开始支持64位(2003年,数据来自维基网络)。而那时,ARM还仅有ARM 11架构,更不用说现在的ARM V8指令集组了。
我的看法:MIPS虽然已经衰弱,但,MIPS现在同样还可以作为高通用性微架构使用。我感觉,龙芯选择MIPS,依然是正确的。
(以上仅代表我的个人意见)
㈢ C语言编译器icc与gcc编译出来的执行文件有什么区别
ICC 是intel 针对intel 体系架构开发的编译器,显然,你的代码,如果运行在intel机器上,intel的人开发的编译器,编译出来的可执行代码效率更高。毕竟人家对intel体系结构这么熟悉,里面的优化说明的,肯定做得不错。但是只能运行在intel体系结构上。比如你的PPC的板子就不能运行了。
GCC是一般性的通用的编译器,可以编译运行在各种体系结构上的代码,比如intel, PPC, ARM, MIPS。它很通用。里面的开发者,当然也熟悉intel 体系架构。但是也要考虑到通用。所以,是一般化的选择。在intel体系结构上运行的话,可能某些地方不如ICC的效率高。
他们实现的原理基本是一致的,但是在细节上,肯定差别很大。比如针对同一种语句,有的会告警,有的不会。有些支持扩展特性。有些不支持。