Up: SGI apps Frequently Asked Questions (FAQ)
Next: -57- What are GP-relative and GOT overflows, and how can I fix them?
Previous: -55- Why don't COFF executables run on IRIX 6.1 or 6.2?
Subject: -56- What object file formats does IRIX 6.2 support?
Date: 20 Dec 1996 00:00:01 EST
Bruce Karsh <karsh@audio.esd.sgi.com> and Ping Huang <pshuang@sgi.com>
write: IRIX 6.2 supports
6 processors: R4000, R4400, R4600, R5000, R8000, R10000
3 ABIs: -32, -n32, -64
4 instruction sets: mips1, mips2, mips3, mips4
Irix 6.2 will not support R3000 (or earlier) processors.
Instruction sets:
mips1: The old 32 bit R3000 instruction set. It's mostly for
compatibility. New code probably should not use it.
Available on all 6 processors.
mips2: Adds more floating point registers Adds some improvements
to the floating point instructions. mips2 code may be a
bit smaller than mips3 code.
Available on all 6 processors.
mips3: General purpose registers are 64 bits wide. Some new
instructions are added to load, store, and manipulate 64
bit wide quantities.
Available on all 6 processors.
mips4: Adds some supercomputing-style instructions.
Available on the R5000, R8000, and R10000.
The mips1 and mips2 instruction sets both are available only on the
-32 ABI. The mips3 and mips4 instruction sets both are available
on either the -n32 or -64 ABI, but not on the -32 ABI.
You may mix -mips1 and -mips2 objects together to make a -mips2
executable. You may mix -mips3 and -mips4 objects together to make
a -mips4 executable. No other mixing of instruction sets is
allowed.
ABIs:
-32: Supports the 32 bit instruction sets. This is just what we
are all used to from 5.3.
Available on all 6 processors.
-n32: Supports the 64 bit instruction sets, but not pointers and
longs all remain 32 bits long. (long longs are 64 bits
wide). The -n32 ABI is source code compatible with -32.
Available on all 6 processors.
-64 Supports 64 bit instruction sets and 64 bit pointers.
longs and pointers are all 64 bits wide. Great for apps
which need a LARGE address space. The -64 ABI is not
source code compatible with -n32 and -32 since in -64 longs
and pointers are now 64 bit quantities. This means that
casts of ints to/from pointers will not work in most cases
and the layout of structs will be different.
Available on the R8000, R10000, and the IP19 (R4400)
processors only, due to OS restrictions.
( -64 requires a large kernel).
Summary:
Format Function Processors
------ -------- ----------
-32 -mips1 old, 32 bit, mostly for compatibility ALL
-32 -mips2 above plus more fp regs, faster fp ALL
-n32 -mips3 64 bit regs, 32 bit pointers ALL
-n32 -mips4 above plus supercomputer instructions R5/8/10000
-64 -mips3 64 bit regs, 64 bit pointers IP19 R4400 &
R8/10000
-64 -mips4 above plus supercomputer instructions R8/10000
The compiler can produce executables in all supported formats on all
supported processors, although not all formats will *execute* on all
processors. The old 4.x object file format, COFF, will no longer be
supported. Only the newer format, ELF, will be supported.
ftp://viz.tamu.edu/pub/sgi/software/programming/sgi_opt_level.c
determines programmatically the highest optimization level that can
be performed on the current CPU.
Up: SGI apps Frequently Asked Questions (FAQ)
Next: -57- What are GP-relative and GOT overflows, and how can I fix them?
Previous: -55- Why don't COFF executables run on IRIX 6.1 or 6.2?