编译器开发入门指南GNUToolChain为例通常的选择--GNUToolChain•事实上的工业标准,绝大部分*NIX软件都用GCC编译•久经考验,代码质量还不错,bug少
•完善的生态环境,binutilsgdbglibc以及众多针对GCC开发的软件•广泛的用户群,巨大的影响•IBMAdaCoreCodeSourceryRedHatIntelGoogle等有实力的厂商支持•开发维护成本低,对中小型企业非常划算其他的选择--LLVM•非常先进的设计,非常清晰的结构,非常好懂的代码
•iOS众多app检验质量很好•OpenCL新版CUDA等最新技术都基于LLVM去开发•生态环境还不成熟•对GCC兼容还不是100%•AppleNVIDIAAMDXilinx等有实力的厂商自己开发维护得起移植就是抄抄改改•明确自己处理器的需求•找现有的相似的实现去改•基本上就是copyandmodify•结合gccint去抄•边抄边看边学边改binutils移植的要点•符号表,tc-machine后端,bfd,基本上就改这几个地方,没什么文档,自己看代码吧,不难•gas就一个工作,text2binary,牢记这个,因为现在gas有很多地方好像要做正确性检查,容易让人多想•text2binary最重要的就是position
bit的positionbfd部分修改•bfd/archures
c中#definebfd_mach_mips_XXX的定义•bfd/bfd-in2
h中#definebfd_mach_mips_XXX的定义•bfd/cpu-mips
c中匿名enum增加I-mipsXXX项,arch_info_struct数组增加对应描述•bfd/elfxx-mips
c中_bfd_elf_mips_mach和mips_set_isa_flag函数增加对应case选择分支,并在mips_ma