Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Fastest freeware C++ compiler?

Author: Daniel Mehrmannn

Date: 13:22:51 12/14/03

Go up one level in this thread


You should also take a look, for Visual Studio 6, to this:

http://msdn.microsoft.com/vstudio/downloads/tools/ppack/download.aspx:

Microsoft Visual C++ Processor Pack Release Readme
© 2000 Microsoft Corporation. All rights reserved.
The Microsoft Visual C++ Processor Pack Release Readme contains the following
sections:
Setup Instructions
Compiler-Specific Notes
Debugger-Specific Notes
Documentation Notes
Intel Performance Libraries and Sample Files
AMD Sample Files
Using MASM to Assemble .asm Files
Setup Instructions
The Processor Pack requires that you have already installed Microsoft Visual C++
version 6.0 with Service Pack 4 or greater. To install Service Pack 4, go to
http://msdn.microsoft.com/vstudio/sp/vs6sp4/dnldoverview.asp and download the
appropriate version.
To install the Processor Pack, run Vcpp.exe. The Setup program overwrites your
compiler files, and the Processor Pack documentation (procpack.chm) is installed
in the Vc98 folder. MASM version 6.15 is installed in the bin folder, located in
the Vc98 folder.
There is no uninstall; you must uninstall Microsoft Visual C++ 6.0 and manually
remove the Processor Pack files.
Compiler-Specific Notes
No EMMS Instruction Warning
You may get the message "Warning C4799: Function x has no EMMS instruction" from
the compiler in locations that no EMMS instruction is needed. This warning will
be more accurate by release time. To disable this warning, use #pragma warning.
Rebuilding MFC with Processor Pack Compiler
You cannot rebuild MFC with the Processor Pack compiler. Because of changes
related to inlining, rebuilding MFC with the Processor Pack compiler results in
link errors. The link errors are unresolved externals for CTime::operator
members. If you need to rebuild MFC, you must uninstall Visual C++ 6.0, manually
remove the files installed by Visual C++ Processor Pack and then reinstall
Visual C++ 6.0 and any necessary service packs.
Calling a Virtual Member Function in Constructor Invocation
If you call a virtual member function in a constructor invocation, the compiler
may generate an Internal Compiler Error message. To work around this, call the
virtual member function and assign its return value to a temporary. Then pass
this temporary in the construction invocation.
Using -QIFist
There is a known problem with -QIfist and its use is not recommended. The
problem will be addressed in the next Service Pack.
Passing __m64 and __m128 Argument Types
Passing multibyte argument types by value may result in a run time performance
penalty. For __m64 and __m128 types, this is of particular concern because of
the additional requirement of memory alignment. While this compiler imposes no
restrictions on passing __m64 and __m128 types, a future release of the compiler
will prohibit the passing of more than three __m64 or three __m128 types by
value. The first 3 parameters are passed in registers, thus avoiding alignment
and performance issues; it is recommended that the fourth __m64 or __m128
parameters and beyond be passed by reference. To avoid compatibility problems
with future compilers and to enhance performance, do not pass more then three
__m64 or __m128 types by value. There are no restrictions to passing these
argument types by reference (pointers).
An additional construct to avoid is passing a structure by value, particularly a
structure that contains a __m64 or __m128 data type. In many case, accessing a
__m64 or __m128 value in a structure passed by value results in an alignment
exception being thrown.
Variable Argument List and Passing __m64 and __m128 Argument Types
Because of alignment issues, passing these argument types in a variable argument
list by value is not supported. Future compilers may support this feature.
Compatibility with Intel Compiler
Some compatibility issues have been identified with mixing source and object
files between the Microsoft Visual C++ Processor Pack compiler and the Intel
C/C++ compiler. These issues arise when using __m64 and __m128 types. These
problems are exposed when sharing these data types across compilers either as
global variables or as formal parameters. To minimize any problems, it is
recommended that uses of __m64 and __m128 types remain within the scope of a
single compiler. Both compilers are in the process of eliminating these
inconsistencies in future releases.
Debugger-Specific Notes
The debugger requires that if you are running Windows NT version 4.0, you must
have Service Pack 5 or greater installed. For remote debugging, you must have
Visual C++ with Service Pack 4 installed on both machines.
If you edit the value of a register from the Registers window or an EE window
(such as QuickWatch or Watch), it may revert to the previous value once you step
in the debugger. This affects STO-ST7, FPU status, MM0-MM7, XMM0-XMM7,
XMM00-XMM73, and MM00-MM71 registers on Windows 95 and Windows 98.
Documentation Notes
Under the AMD 3DNow! Technology Overview and Intrinsics node, the Data Types
topic lists the second integer data type graphic as (64 bits x 1) Quad word. It
should read (16 bits x 4) Quad word. Also, the bit pattern in the last block on
this graphic reads 43 to 63. It should read 48 to 63.
Intel Performance Libraries and Sample Files
Intel performance libraries are available at
http://developer.intel.com/vtune/perflibst/.
Intel SSE samples are available at
http://developer.intel.com/vtune/cbts/strmsimd/appnotes.htm.
Intel SSE2 samples are available at
http://developer.intel.com/vtune/cbts/strmsimd/sse2_appnotes.htm.
AMD Sample Files
AMD sample files are available in your installation folder. You can find them by
going to the Samples folder in the Vc98 folder. Click the AMD folder, and there
are two sample folders, Isdk and Asdk, which contain the sample files. You do
not need a project; compile each sample with cl /Ox /DWIN32 /Fesample.exe *.cpp.
Using MASM to Assemble .asm Files
Microsoft Visual C++ does not support assembler source files by default, that
is, the Developer Studio does not associate any special significance  to .asm
files. However, there are two viable options. You can use the following two
methods to add .asm files to a Visual C++ project. The methods are:
Using custom build rules.
Using an assembler to build the .obj file from the .asm file from the command
line and add the .obj file to the project or add to the linker input files.
The use of custom build is described below. By using a custom build rule, a
project can invoke MASM on a per-file basis to assemble .asm files. The
resulting object modules are then automatically linked into the desired target.
For more information about MASM, see MASM Reference Documentation.
Using Visual C++ Developer Studio, the following provides sample code and a
step-by-step example of how to create a simple console application, CAPP, that
requires MASM (ML.exe) to assemble one of its source files.


daniel



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.