Difference between revisions of "MIPSpro"

From Nekochan
Jump to: navigation, search
m (Zero length and variable length arrays)
Line 1: Line 1:
 
'''MIPS Pro''' is a commercial software compiler suite.
 
'''MIPS Pro''' is a commercial software compiler suite.
It comprises of Fortran,C, C++ compilers and Pro Dev Workshop.
+
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.
  
It comprises a foundation CD, which contains base tools like assemblers and linkers and compiler CDs and overlay CDs.
+
== Availability ==
 
+
Last known released version 7.4.4.
+
 
+
 
+
=== Availability ===
+
  
 
* 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).  
 
* 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.
* Joining a SGI developer program. 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.  
 
* Black areas (ebay, etc).. Software Piracy is not to be discussed or associated with the forum or nekochan site for various legal reasons.  
  
=== Licenses ===
+
== Licenses ==
  
 
New Licenses are granted from [[Key-o-matic]]. There may also be licenses from other sources. Licenses are managed with the [[Flexlm]] license manager.
 
New Licenses are granted from [[Key-o-matic]]. There may also be licenses from other sources. Licenses are managed with the [[Flexlm]] license manager.
 
  
 
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.
 
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.
  
 
==Pragmas==
 
==Pragmas==
 
  
 
=== See Also ===
 
=== See Also ===
Line 31: Line 22:
  
 
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 [http://www.nekochan.net/wiki/index.ph/MIPS_Pro#References]. 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.
 
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 [http://www.nekochan.net/wiki/index.ph/MIPS_Pro#References]. 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.
 
  
 
===Variable attributes===
 
===Variable attributes===
 
__attribute__(( XXX ));
 
__attribute__(( XXX ));
  
quote:
+
__attribute__((something)) is a GCC extension, that has to go or #defined away
        __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.
+
If you want to make sure that struct is packed, have a look at the MIPSpro pragma guide.
  
 
[http://gcc.gnu.org/onlinedocs/gcc-4.3.0/gcc/Variable-Attributes.html GCC Variable Attributes ]  
 
[http://gcc.gnu.org/onlinedocs/gcc-4.3.0/gcc/Variable-Attributes.html GCC Variable Attributes ]  
Line 49: Line 38:
 
int xyz[0];
 
int xyz[0];
  
quote:
+
Arrays of zero length are a GNU extension: http://gcc.gnu.org/onlinedocs/gcc-4.3.0/gcc/Zero-Length.html
 
+
        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:
 
Try using a pointer:
  
int *xyz;
+
int *xyz;
 
+
  
 
Variable length arrays require a code rewrite.
 
Variable length arrays require a code rewrite.
Line 65: Line 50:
  
 
  puts( "abc" "def" );
 
  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.
 
gcc actually accepts this.. It concatenates two strings.  Its not actual C syntax but what the hey. GCC will accept any old garbage.
  

Revision as of 14:06, 7 April 2009

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.

Availability

  • 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.

Licenses

New Licenses are granted from Key-o-matic. There may also be licenses from other sources. Licenses are managed with the Flexlm license manager.

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.

Pragmas

See Also

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 [1]. 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.

Variable attributes

__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.

GCC Variable Attributes


Zero length and variable length arrays

int xyz[0];

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:

int *xyz;

Variable length arrays require a code rewrite.


General Retardedness

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" );

or

char buff[ 255 ];
bzero( buff, 0, 255);
strcat( buff, "abc" );
strcat( buff, "def" );

References

See Also

Quirks

Patches

See Also

  • techpubs.sgi.com
  • 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)