Quick question on 1.0.2 and Visual Studio win64 builds ... is ml64 supported or just nasm?
Thanks, Steve... On Wed, Mar 5, 2014 at 2:00 PM, Steven Kneizys <sknei...@ferrilli.com> wrote: > I wanted to be able to build 32 and 64 bit versions of recent OpenSSL > 1.0.x production and beta/snapshots using Visual Studio Express > edition. The new Visual Studios include ml/ml64, and while NASM is > great sometimes it is nice to have the option of MASM as well. > > I was trying to do things with the built-in translator and other > support code but decided to get the biggest initial return on invested > time that I would do the translation work out the build itself at > first, then integrate later, especially since 1.0.2 is already in beta > and 1.0.1 is winding down. The best way I could see to do that is to > use what is already standard, the NASM flavour (dialect), and go to > MASM from there. So the strategy was to make the OpenSSL build think > it was going to send to NASM, but really I would translate to MASM. > So I created my experimental "fake nasm". > > It is available here if anybody wants to play with it: > http://erpdata.com/fakenasm > > If run, it will sort of say it is "nasm": > E:\usr_local_src\>nasm -v > NASM version 2.11.02 compiled on Feb 19 2014 (fakeout ver 1.0 03-MAR-2014) > > Actually, it is a tiny C program that forwards the request to a ".bat" > file, and a perl script, which then does a translation of the dialect, > creating an intermediate code file ending in ".XMASM" (meaning > translated to MASM) which is then fed to ml/ml64. Here is a sample > from a build: > > > E:\usr_local_src\openssl-1.0.1f_64>nmake -f ms\ntdll.mak > > Microsoft (R) Program Maintenance Utility Version 12.00.21005.1 > Copyright (C) Microsoft Corporation. All rights reserved. > > Building OpenSSL > set ASM=nasm -f win64 -DNEAR -Ox -g > perl crypto\x86_64cpuid.pl tmp32dll\x86_64cpuid.asm > nasm -f win64 -DNEAR -Ox -g -o tmp32dll\x86_64cpuid.obj > tmp32dll\x86_64cpuid.asm > NASM version 2.11.02 compiled on Feb 19 2014 (fakeout ver 1.0 03-MAR-2014) > Assembling tmp32dll\x86_64cpuid.asm to tmp32dll\x86_64cpuid.obj (via > tmp32dll\x86_64cpuid.asm.XMASM) > ml64 /c /Cp /Cx /Zi /Fotmp32dll\x86_64cpuid.obj tmp32dll\x86_64cpuid.asm.XMASM > Microsoft (R) Macro Assembler (x64) Version 12.00.21005.1 > Copyright (C) Microsoft Corporation. All rights reserved. > > Assembling: tmp32dll\x86_64cpuid.asm.XMASM > > It tells the OpenSSL build it is "nasm", but then passes the request > on to ml or ml64. By keep the translation out of the OpenSSL tree at > first I was able to apply it to a wide variety of OpenSSL snapshots > and releases. I was just able to build 32 and 64 bit version of: > > 1.0.1f > openssl-1.0.2-stable-SNAP-20140303 > openssl-1.0.2-stable-SNAP-20140305 > > All you have to do is put the "fake nasm" in your path instead of the > real one, then build as usual using Visual Studio 2013 x86 or x64 > command tools prompt, and it will have ml/ml64 do the assembly parts. > > While I am able to build those versions and they pass the "ms\test", I > do not have a CPU with Intel® AVX, Intel® AVX2, Intel® AVX-512 ... > anybody want to test it on those processors? :-) > > Eventually I hope to put what I am learning into the base openssl so > maybe ml/ml64 might be supported again. > > Thanks, > > Steve... > > On Tue, Mar 4, 2014 at 9:11 AM, Steven Kneizys <sknei...@ferrilli.com> wrote: >> I'm working on a little fun thing to see if I can get Visual Studio to >> compile and assemble (64 bit) the 1.0.2 snapshots ... more on that >> later on in the week. I am trying to figure out what the MASM 12.x >> assembler wants that is different from what NASM takes right now. I >> know things are going through the translator on OpenSSL, but the >> current MASM-generated code is not working, and I know it is >> officially unsupported. But I am looking at it :-) >> >> On Fri, Feb 28, 2014 at 5:00 PM, Andy Polyakov <ap...@openssl.org> wrote: >>>> I remembered seeing XMMWORD being taken into consideration if the >>>> opcode args were of the xmm variety, so out of curiosity I added a >>>> little code to my previous patch to modify the opcode's third arg as >>>> well, if present: >>> >>> >>> It will be looked into as time permits, but not for 1.0.2 release. If >>> anything one should also look into AVX2 and AVX512 support >>> >>> ______________________________________________________________________ >>> OpenSSL Project http://www.openssl.org >>> Development Mailing List openssl-dev@openssl.org >>> Automated List Manager majord...@openssl.org >> >> >> >> -- >> Steve Kneizys >> Senior Business Process Engineer >> Voice: (610) 256-1396 [For Emergency Service (888)864-3282] >> Ferrilli Information Group -- Quality Service and Solutions for Higher >> Education >> web: http://www.ferrilli.com/ >> >> Making you a success while exceeding your expectations. > > > > -- > Steve Kneizys > Senior Business Process Engineer > Voice: (610) 256-1396 [For Emergency Service (888)864-3282] > Ferrilli Information Group -- Quality Service and Solutions for Higher > Education > web: http://www.ferrilli.com/ > > Making you a success while exceeding your expectations. -- Steve Kneizys Senior Business Process Engineer Voice: (610) 256-1396 [For Emergency Service (888)864-3282] Ferrilli Information Group -- Quality Service and Solutions for Higher Education web: http://www.ferrilli.com/ Making you a success while exceeding your expectations. ______________________________________________________________________ OpenSSL Project http://www.openssl.org Development Mailing List openssl-dev@openssl.org Automated List Manager majord...@openssl.org