MIPS Pro is a commercial software compiler suite. It comprises of Fortran,C, C++ compilers and Pro Dev Workshop. It comprises a foundation CD, which contains base tools like assemblers and linkers and compiler CDs and overlay CDs. Last known released version 7.4.4.
- Purchase from SGI. Expect a huge shock at the price, which varies from country to country and is unrelated to any laws of Economics (or Time or Physics).
- Joining a SGI developer program. This is free. However, the process of acquiring a MIPS Pro license requires a corporate credit check to establish a "business relationship". This is easier with a company that has been operating for several years and demonstrated commercial products.
- Black areas (ebay, etc).. Software Piracy is not to be discussed or associated with the forum or nekochan site for various legal reasons.
An unlicensed copy of the compiler (from say a black area) will display a page of text on how and where to contact SGI to purchase a legitimate license when asked to compile each and every source file. Other than the annoying "nagging" the compiler will operate normally. For the record, the originator of this topic has a legitimate copy and license granted by SGI.
Getting rid of GCC-isms
GCC, The GNU Compiler Collection does an excellent job of providing compilers for an extremely wide variety of platforms and multitude languages. In trying to be all things in all cases it falls down in most cases. Most commercial vendor specific compilers are designed for one and only one language and generate code for only one machine architecture. MIPS Pro produces much better optimized code for the MIPS architecture . GCC has had some non standard language features added to it ("GCC-isms"). Porting Open source projects developed solely on Linux often requires removal of GCC-isms. The MIPS Pro Compiler is far more strict in making sure the input code adheres to the official standard than GCC and a lot of other compilers.
__attribute__(( XXX ));
__attribute__((something)) is a GCC extension, that has to go or #defined away
If you want to make sure that struct is packed, have a look at the MIPSpro pragma guide.
Zero length and variable length arrays
Arrays of zero length are a GNU extension: http://gcc.gnu.org/onlinedocs/gcc-4.3.0/gcc/Zero-Length.html
Try using a pointer:
Variable length arrays require a code rewrite.
puts( "abc" "def" );
gcc actually accepts this.. It concatenates two strings. Its not actual C syntax but what the hey. GCC will accept any old garbage.
Various ways around this.
puts( "abcdef" );
char buff[ 255 ]; bzero( buff, 0, 255); strcat( buff, "abc" ); strcat( buff, "def" );
- 1. quad-precision benchmark (Scroll down to where it says 30 times slower)
- MIPSpro 64-Bit Porting and Transition Guide (document number: 007-2391-006)
- MIPSpro Assembly Language Programmer's Guide (document number: 007-2418-006)
- MIPSpro Auto-Parallelizing Option Programmer's Guide (document number: 007-3572-002)
- MIPSpro Compiler Letter (document number: 007-3639-003)
- MIPSpro C/C++ Pragmas (document number: 007-3587-005)
- MIPSpro Fortran 77 Language Reference Manual (document number: 007-2362-005)
- MIPSpro Fortran 77 Programmer's Guide (document number: 007-2361-009)
- MIPSpro Fortran 90 Commands and Directives Reference Manual (document number: 007-3696-005)
- MIPSpro Fortran 90 Programmer's I/O Guide (document number: 007-3695-006)
- MIPSpro Fortran Language Reference Manual, Volume 1 (document number: 007-3692-006)
- MIPSpro Fortran Language Reference Manual, Volume 2 (document number: 007-3693-007)
- MIPSpro Fortran Language Reference Manual, Volume 3 (document number: 007-3694-006)
- MIPSpro N32 ABI Handbook (document number: 007-2816-005)
- MIPSpro N32/64 Compiling and Performance Tuning Guide (document number: 007-2360-010)