I have done some evaluation tests of intel compiler and I
want to use it to compile my C code in both windows and Linux
plateforms. My code has some assembly files written in MASM syle as
I am wondering if intel compiler does support assembly files (MASM style) ,originally written/debugged in windows with intel compiler, in Linux ? My problem is that I don't want to rewrite the MASM files to be compatible with the intel toolchain in Linux. Other question: In windows, Visual Studio 2010, intel compiler 12 seems to use actually ML.exe and ML64.exe to assemble .asm file. why intel does not have their own assembler, using ML/ML64, does it hurt overall performance?
Intel C++ Compiler is a compiler for C/C++ - no native support for assembly files. It is true that the compiler driver (icl/icc/icpc/...) can detect whether files are source files or assembly files (or others). In the latter case, however, it'll use an external assembler tool, typical for the underlying platform (GNU as for Linux*/Mac OS* X and ml for Windows*).
Keep in mind that assembly syntax is not standardized. Migrating from one assembler to another is therefore hard. In case you really need to create platform independent assembly files you should have picked an assembler that is available on more than one platform (e.g. YASM) - MASM definitely is Windows* only!
Technically speaking, the Intel C++ Compiler has an own internal assembler. This one is required for transforming compiler's intermediate language to object code without loss of information, regarding optimization. You can, however, instruct the compiler to bypass this and generate an intermediate assembly file, too (Linux: -use-asm). In that case it'll use the assembly syntax typical for the used platform. Anyways, that's less related to your problem but you kind of asked for it.
So, in short: You need to pick a platform independent assembler (syntax) and migrate your existing assembly files by hand.
Thanks Georg, yes YASM would be defintely a good solution, and I expect that I would need a toolchain like: yasm/icl to produce obj files, then use xlink to link my code into an executable.
Actually I don't want to use MS Visual studio to build my solution, and I want to use batch file/make file to build(e.g use Cmake), my question is: Can I still do this without the need to install MS visual studio? I am asking this because when I tried to call icl.exe from cmd.exe I got this error: C:\Program Files (x86)\Intel\Composer XE 2011 SP1\bin\ia32> C:\Program Files (x86)\Intel\Composer XE 2011 SP1\bin\ia32>icl.exe sample.c Intel C++ Compiler XE for applications running on IA-32, Version 126.96.36.1994 Build 20120612 Copyright (C) 1985-2012 Intel Corporation. All rights reserved.
icl: error #10114: Microsoft Visual C++ not found in path