|
Contents:
Microsoft* Macro Assembler Compatibility
- Issue command using -Fa option to generate assembly code file, file.asm.
>> icl -Fa -c file.c
- To assemble the file.asm file, call MASM with this command:
>> ml -c -coff file.asm
The above command generates an object file that you can link with other object files of the whole project. Note that MASM does not support all the features used on object files for C/C++. Therefore, not all files generated by the compiler will assemble with MASM. See the MASM documentation for more information.
Predefined Macro to Identify the Intel® C++ Compiler The __INTEL_COMPILER macro is defined when using the Intel® C++ Compiler. See the "Additional Predefined Macros" section in the User's Guide.
Predefined Macros for Standard Conformance The __cplusplus, __DATE__, __FILE__, __LINE__, __STDC__, __STDC_HOSTED__ and__TIME__ macros are all predefined by the Intel C++ Compiler for Windows. For more information, read the Conformance to the C Standard section of the User's Guide.
Support for Intel® Itanium® Architecture ints and 80-bit Floats Intel® Itanium® Architecture ints are supported with the __int64 or long long data types. The Intel C++ Compiler for Windows does support 80-bit long doubles when the -Qlong_double option is specified. See the Floating-point Optimizations and Floating-point Options Quick Reference sections of the User's Guide for more information.
Support for Non-Microsoft Visual C++* .obj Formats The Intel C++ Compiler for Windows only supports the Microsoft Visual C++* 6.0, .NET 2002, .NET 2003 or 2005 object models. Visual C++ .NET 2002 is not supported in 10.0. Details can be found here.
Supported Calling Conventions The Intel C++ Compiler for Windows supports the same calling conventions as Microsoft Visual C++. For 32-bit applications, these are __cdecl, __stdcall, __fastcall, and thiscall. The differences between them are in the naming of the routines, the stack usage and parameter passing. Please refer to the Microsoft Visual C++ online help for details on the differences.
Default Calling Convention The __cdecl calling convention is the default 32-bit calling convention for the Intel C++ Compiler for Windows. For 64-bit applications, the default is __fastcall and a RISC-based exception handling model. __fastcall uses registers to pass the first four arguments and the stack frame to pass additional arguments on function calls.
Inline Assembly The Intel® C++ Compiler supports the use of inline assembler using MASM-style assembly code for both 32-bit applications and Intel® 64 applications. Inline assembly is not supported for applications targeting Itanium® architecture. Refer to the Microsoft Visual C++* documentation for more information about using inline assembly.
Support for ALIGN 16 in inline asm The Intel C++ Compiler for Windows does support the align directive in inline assembly. In the following example:
__asm { mov eax, 4 align 16 mov eax, 5 } The "mov" instruction after the "align 16" will be aligned on a 0 MOD 16 address when compiled with the Intel C++ Compiler for Windows.
Versions of the EDG+ Front End
| Intel C++ Compiler |
EDG C++ Front End |
| 10.0 |
3.8 |
| 9.0 |
3.4.1 |
| 8.1 |
3.3 |
| 8.0 |
3.2 | |
EDG+: Edison Design Group* Inc.
Standard Compatibility on Placing Standard C Library Functions The standard requires that standard C library functions be placed in the "std" namespace. But the Intel C++ Compiler for Windows does not implement this.
The Intel C++ Compiler for Windows uses the Microsoft Visual C++ header files, libraries and linker. Microsoft controls the header files that define the namespace. Contact Microsoft's technical support in reference to Microsoft's conformance to the C++ standard on this issue.
ANSI compatibility for variables declared in a for loop. ANSI standard specifies that variables declared in a for loop are local to the for loop, but Intel C++ Compiler for Windows treats them as local to the function. The Intel C++ Compiler for Windows is Microsoft compatible. Use the /Zc:forScope (note the capital "S") switch that enforces this behavior.
No Support for IEEE Specification of NANs Intel C++ Compiler for Windows does not support IEEE specification of NANs. Neither the ANSI C nor the ANSI C++ standard defines how NANs are implemented.
Difference in Treating enum Bit Fields: signed or unsigned Intel C++ Compiler for Windows considers enum bit fields to be unsigned. But Microsoft Visual C++ Compiler treats enum bit fields as signed.
This applies to:
|