© 2000 Microsoft Corporation. All rights reserved.
Welcome to the Microsoft Visual C++ Processor Pack Release with Service Pack 5 for Visual C++ 6.0. The Microsoft Visual C++ Processor Pack Release Readme contains the following sections:
The Processor Pack requires that you have already installed Microsoft Visual C++ version 6.0 with Service Pack 5 or greater. To install Service Pack 5, go to the Product Updates page at http://msdn.microsoft.com/vstudio/downloads/updates.asp and download the appropriate version.
The Processor Pack also requires Microsoft Visual C++ version 6.0 Professional or Enterprise Editions. The Processor Pack will not install on the Standard Edition.
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.
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.
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 5 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.
The problems with QIfist have been addressed in this service pack. If you encounter any problems using QIfist, report them to Microsoft Product Support Services at http://support.microsoft.com/directory.
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 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.
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:
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.
/* Filename: CMAIN.C */ #include <stdio.h> #ifdef __cplusplus extern "C" { #endif void MasmSub (char *, short *, long *); #ifdef __cplusplus } #endif char chararray[4] = "abc"; short shortarray[3] = {1, 2, 3}; long longarray[3] = {32768, 32769, 32770}; void main( void ) { printf ("%s\n", chararray); printf ("%d %d %d\n", shortarray[0], shortarray[1], shortarray[2]); printf ("%ld %ld %ld\n", longarray[0], longarray[1], longarray[2]); MasmSub (chararray, shortarray, longarray); printf ("%s\n", chararray); printf ("%d %d %d\n", shortarray[0], shortarray[1], shortarray[2]); printf ("%ld %ld %ld\n", longarray[0], longarray[1], longarray[2]); }
; Filename: MASMSUB.ASM ; Assemble options needed for ML: /c /Cx /coff .386 .MODEL flat, C .CODE MasmSub PROC uses esi, \ arraychar:PTR, \ arrayshort:PTR, \ arraylong:PTR mov esi, arraychar ; Load ESI with the address of the char array. mov BYTE PTR [esi], "x" ; Since a char is 1 byte long, each mov BYTE PTR [esi+1], "y" ; successive element can be accessed mov BYTE PTR [esi+2], "z" ; by adding 1 more to esi. mov esi, arrayshort; Load ESI with the address of the short array. add WORD PTR [esi], 7 ; Since a short is 2 bytes long, each add WORD PTR [esi+2], 7 ; successive element can be accessed add WORD PTR [esi+4], 7 ; by adding 2 more to esi. mov esi, arraylong ; Load ESI with the address of the long array. inc DWORD PTR [esi] ; Since a long is 4 bytes long, each inc DWORD PTR [esi+4] ; successive element can be accessed inc DWORD PTR [esi+8] ; by adding 4 more to esi. ret MasmSub ENDP END
Use the following steps to create the project:
Use the following steps to build the project:
ml.exe -c -coff -Cx -Fo$(IntDir)\$(InputName).obj $(InputName).asm
Note that you must always add -c and -coff when using MASM. For the debug build, select the Win32 Debug configuration and add the -Zi switch.
For more information on custom build rules, see the Visual C++ online Help for the Custom Build tab (press the Help button in the Project Settings dialog box when the Custom Build tab is selected).