Up: SGI apps Frequently Asked Questions (FAQ)
Next: -56- What are GP-relative and GOT overflows, and how can I fix them?
Previous: -54- Why don't COFF executables run on IRIX 6.1 or 6.2?
Subject: -55- What object file formats will IRIX 6.2 support?
Date: 04 Aug 1995 00:00:01 EST
Bruce Karsh <karsh@audio.esd.sgi.com> writes: IRIX 6.2 will support
4 processors: R4000, R4400, R4600, R8000
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 4 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 4 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 4 processors.
mips4: Adds some supercomputing-style instructions.
Available on the R8000 only, due to hardware restrictions.
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 4 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 4 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 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 supercomuter instructions R8000
-64 -mips3 64 bit regs, 64 bit pointers R8000 & IP19 R4400
-64 -mips4 above plus supercomputer instructions R8000
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.
Up: SGI apps Frequently Asked Questions (FAQ)
Next: -56- What are GP-relative and GOT overflows, and how can I fix them?
Previous: -54- Why don't COFF executables run on IRIX 6.1 or 6.2?