diff options
Diffstat (limited to 'Mkfiles/vc15/readme.vc14.txt')
-rw-r--r-- | Mkfiles/vc15/readme.vc14.txt | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/Mkfiles/vc15/readme.vc14.txt b/Mkfiles/vc15/readme.vc14.txt new file mode 100644 index 00000000..ea716567 --- /dev/null +++ b/Mkfiles/vc15/readme.vc14.txt @@ -0,0 +1,106 @@ +Building YASM with Microsoft Visual Studio 2015 (C/C++ v14) +----------------------------------------------------------- + +This note describes how to build YASM using Microsoft Visual +Studio 2015 (C/C++ v14). + +1. 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. + +2. Building YASM with Microsoft 2015 (VC14) +------------------------------------------- + +Now locate and double click on the yasm.sln solution file in +the 'Mkfiles/vc14' subdirectory to open the build project in +the Visual Studio 2015 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 2015 and VC++ version 14 +-------------------------------------------------------- + +The YASM version vsyasm.exe is designed specifically for use +with the 2010 and later versions of Visual Studio. 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 14.0\VC\bin + +On 32-bit Windows it is normally at: + +C:\Program Files\Microsoft Visual Studio 14.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 custom tools facility in Visual Studio 2015, 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\V140\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, 30th April 2015 |