Building YASM with Microsoft Visual Studio 2010 (C/C++ v10)
-----------------------------------------------------------

This note describes how to build YASM using Microsoft Visual
Studio 2010 (C/C++ v10).

1. The Compiler
---------------

If you want to build the 64-bit version of YASM you will need 
to install the Visual Studio 2010 64-bit tools, which may not 
be installed by default.  If using Visual C++ Express 2010, 
you will need to install the Windows SDK to obtain the 64-bit
build tools. 

2. YASM Download
----------------

First YASM needs to be downloaded and the files placed within 
a suitable directory, which will be called <yasm> here but can 
be named and located as you wish.

3. Building YASM with Microsoft 2010 (VC10)
-------------------------------------------

Now locate and double click on the yasm.sln solution file in 
the 'Mkfiles/vc10' subdirectory to open the build project in 
the Visual Studio 2010 IDE and then select:

    win32 or x64 build
    release or debug build

as appropriate to build the YASM binaries that you need.

4. Using YASM with Visual Sudio 2010 and VC++ version 10
--------------------------------------------------------

The YASM version vsyasm.exe is designed specifically for use
with Visual Studio 2010. To tell Visual Studio where to find
vsyasm.exe, the environment variable YASMPATH can be set to 
the absolute path of the directory in which vsyasm.exe is
located (this path should include the final backslash). 

Alternatively you can find the directory (or directories) 
where the VC++ compiler binaries are located and put copies 
of the vsyasm.exe binary in these directories. The typical 
location on 64-bit Windows is:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin

On 32-bit Windows it is normally at:
  
C:\Program Files\Microsoft Visual Studio 10.0\VC\bin

Depending on your system you can use either the win32 or the
x64 version of vsyasm.exe, which must be named vsyasm.exe. 

To use the new custom tools facility in Visual Studio 2010, you
need to place a copy of three files - yasm.props, yasm.targets 
and yasm.xml - into a location where they can be found by the
Visual Studio build customisation processes.  There are several 
ways to do this:

  a. put these files in the MSBUILD customisation directory, 
  which is typically at:

    C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations
  
  or:
  
    C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations

  b. put them in a convenient location and set this path in the 
     'Build Customisations Search Path' in the Visual Studio 
	 'Projects and Solutions|VC++ Project Settings' item in
	 the 'Tools|Options' menu; 

  c. put them in a convenient location and set this path in the 
     'Build Customisation dialogue (discussed later).

To use YASM in a project, right click on the project in the Solution 
Explorer and select 'Build Customisations..'. This will give you a 
dialog box that allows you to select YASM as an assembler (note that 
your assembler files need to have the extension '.asm').  If you have 
used option c. above, you will need to let the dialogue find them 
using the 'Find Existing' button below the dialogue.

To assemble a file with YASM, select the Property Page for the 
file and the select 'Yasm Assembler' in the Tool dialog entry. 
Then click 'Apply' and an additional property page entry will 
appear and enable YASM settings to be established.

5. A Linker Issue
-----------------

There appears to be a linker bug in the VC++ linker that 
prevents symbols with absolute addresses being linked in DLL 
builds.  This means, for example, that LEA instructions of 
the general form:

   lea, rax,[rax+symbol]

cannot be used for DLL builds.  The following general form 
has to be used instead:

   lea rcx,[symbol wrt rip]
   lea rax,[rax+rcx]

This limitation may also cause problems with other instruction 
that use absolute addresses.

6. Acknowledgements
-------------------

I am most grateful for the fantastic support that Peter Johnson,
YASM's creator, has given me in tracking down issues in using
YASM for the production of Windows x64 code.

  Brian Gladman, 29th January 2011
