URN Logo
UNIX Resources » Linux » China Linux Forum » CPU 与 编译器 » 5 » 简单谈一下mips target
announcement 声明: 本页内容为中国Linux论坛的内容镜像,文章的版权以及其他所有的相关权利属于中国Linux论坛和相应文章的作者,如果转载,请注明文章来源及相关版权信息。
Resources
China Linux Forum(finished)
Linux Forum(finished)
FreeBSD China(finished)
linuxforum.net
  业界新闻与评论
  自由软件杂谈
  IT 人生
  Linux软件快递
  翻译作坊
  Linux图书与评论
  GNU Emacs/XEmacs
  Linux 中文环境和中文化
  Linux桌面与办公软件
  Linux 多媒体与娱乐版
  自由之窗Mozilla
  笔记本电脑上的Linux
  Gentoo
  Debian 一族
  网络管理技术
  Linux 安装与入门
  WEB服务器和FTP服务器
  域名服务器和邮件服务器
  Linux防火墙和代理服务器应用
  文件及打印服务器
  技术培训与认证
  Linux内核技术
  Linux 嵌入技术
  Linux设备驱动程序
  Linux 集群技术
  LINUX平台数据库
  系统和网络安全
  CPU 与 编译器
  系统计算研究所专栏
  Linux下的GUI软件开发
  C/C++编程版
  PHP 技 术
  Java&jsp技术
  Shell编程技术
  Perl 编 程
  Python 编 程
  XML/Web Service 技术
  永远的Unix
  FreeBSD世界
   
简单谈一下mips target
Author: EricFisher    Posted: 2006-03-15 17:18    Length: 3,030 byte(s)
[Original] [Print] [Top]
以下是摘自binutils中gas的mips后端文件tc-mips.c, 定义了mips的目标格式

/* The default target format to use. */

const char *
mips_target_format ()
{
switch (OUTPUT_FLAVOR)
{
case bfd_target_aout_flavour:
return target_big_endian ? "a.out-mips-big" : "a.out-mips-little";
case bfd_target_ecoff_flavour:
return target_big_endian ? "ecoff-bigmips" : ECOFF_LITTLE_FORMAT;
case bfd_target_coff_flavour:
return "pe-mips";
case bfd_target_elf_flavour:
#ifdef TE_TMIPS
/* This is traditional mips. */
return (target_big_endian
? (HAVE_64BIT_OBJECTS
? "elf64-tradbigmips"
: (HAVE_NEWABI
? "elf32-ntradbigmips" : "elf32-tradbigmips"))
: (HAVE_64BIT_OBJECTS
? "elf64-tradlittlemips"
: (HAVE_NEWABI
? "elf32-ntradlittlemips" : "elf32-tradlittlemips")));
#else
return (target_big_endian
? (HAVE_64BIT_OBJECTS
? "elf64-bigmips"
: (HAVE_NEWABI
? "elf32-nbigmips" : "elf32-bigmips"))
: (HAVE_64BIT_OBJECTS
? "elf64-littlemips"
: (HAVE_NEWABI
? "elf32-nlittlemips" : "elf32-littlemips")));
#endif
default:
abort ();
return NULL;
}
}


可以看出,gas中支持的格式包括大小端的,传统、非传统的,旧的、新的,32位、64位的。
主要区别可以参考以下的转贴,
The existence of the traditional and non-traditional targets results from
a few subtle differences in how files are generated depending on whether
they are to be as defined by the generic ELF specification or the SGI
variation in areas that are not really processor specific. Most notably
the definition of what constitutes a local symbol which may affect the
order of symbols in symbol tables.

The old ABI (o32) vs new ABIs (n32, n64) difference is independent from
the above and results from different register sizes, calling conventions, etc.

Traditional mips is the flavour used before SGI went ahead and screwed
it up. :-)

关于o32,n32,n64, 《see mips run》上有一些详细的介绍。在linux上安装mips-linux,
默认的目标格式是elf32-tradbigmips。安装mips-elf时的默认目标格式是elf32-bigmips。

mips-linux和mips-elf的主要区别之一,个人认为,在于mips-linux默认生成为SVR4_PIC
格式的位置独立代码文件。mips-elf是No_PIC的。在配置gcc为--target=mips-elf时,是不
会生成共享的libgcc的。
[Original] [Print] [Top]
« Previous thread
glibc newlib高手多指点,希望对我和以后的新手又帮助
CPU 与 编译器
5
Next thread »
gcc编译问题,大家过来看看,一起探讨一下。
     

Copyright © 2007 UNIX Resources Network, All Rights Reserved.      About URN | Privacy & Legal | Help | Contact us
备案序号: 京ICP备05006143    webmaster: webmaster@unixresources.net
This page created on 2008-07-17 03:47:17, cost 0.036141157150269 ms.