When i install masm assembler, it asked to install Microsoft visual c++ 2005 express edition. I installed it. Now i can find only "ml.exe". Where is masm.exe?Even i tried in cmd by typing masm.exe, but it didn't work. Is masm.exe and ml.exe same?
Since I can execute the same thing (?) from the command line I don't understand why VisualStudio is reporting an error. Any advice? Once I've done the assembly manually, can I tell VisualStudio to skip it?
The suggestion from @njuffa to increase the verbosity of the build was helpful and showed the error that it could not find ml.exe. I believe this is a bug in Version 17.3.0 Preview 6.0 since it is able to find the C++ compiler for x86. My workaround was to add the x86 tools directory to the path (which would break attempts to build for any other environment). Thanks to all for the helpful responses and advice!
You need these three files (ml.exe, ml.err, and link.exe) to run the assembly programs. Copy these files into a directory and add it to your search path (i.e. modify your autoexec.bat file's SET PATH line by appending the directory path).
gccand clang are both known to be compiler drivers. As such, the gcc executable does not compile anything itself. Rather, it calls the compiler (cc1), assembler (as) and linker (ld) with the right flags as needed.
Is this setup true also for the Microsoft C compiler, cl.exe? Is there actually some other executable that does the compilation? I assume that at least the assembling and linking are done by separate executables, since I know that ml.exe (known as MASM) and link.exe exist as separate executables, so cl.exe probably calls them.
The rest of the MSVC C++ compiler is in various DLLs. The C/C++ compiler driver is officially cl.exe, but many of the driver functions are provided by MsBuild. Other executables include link.exe, lib.exe, ml.exe and bscmake.exe. You can't translate the archictecture or terminology blindly from one product set to another that is completely different.
The first line compiles the MASM assembly file into an COFF (common object file format) file. The /c option tells ml.exe to not run link.exe. The /coff option is what tells the compiler to generates a COFF file.
c80f0f1006