News:

Masm32 SDK description, downloads and other helpful links
Message to All Guests
NB: Posting URL's See here: Posted URL Change

Main Menu

New HJWasm release

Started by habran, May 17, 2016, 06:30:15 AM

Previous topic - Next topic

habran

Sorry JJ, I was busy these days to fix HJWasm :biggrin:
Try it now please, it is updated on Terraspace 8)
Cod-Father

TWell

Quote from: habran on May 24, 2016, 12:25:47 AM
This one you built above doesn't debug on source level in 32 bit
That AVX was missing too :redface:
I was testing m32lib compile only as there is a lot file access.

PS: have anyone old Vista DDK ? Is there libc.lib (VS 2005?)

jj2007

Quote from: habran on May 24, 2016, 12:33:47 AM
Sorry JJ, I was busy these days to fix HJWasm :biggrin:
Try it now please, it is updated on Terraspace 8)

OxPT_Assembler HJWasm32 ; 2.7
OxPT_Assembler HJWasm64 ; 3.0 secs, and yes, it's 64-bit code
OxPT_Assembler AsmC ; 2.5 secs

:t

habran

Thanks JJ :t
So, taking in consideration that ASMC has most important parts translated to asm, and has less code to run, that is amazing speed.
With  HJWasm64 you are testing 32 bit code optimized for 32 bit, that is why it is slower than HJWasm32,
we should try opposite. I am planing to write some code optimized for x64 and than we will see how it will perform 8)
Cod-Father

TWell

From VC6 samples:
# When building single-threaded applications you can link your executable
# with either LIBC, LIBCMT, or CRTDLL, although LIBC will provide the best
# performance.


habran

AFAIK  LIBCMT, is for static build and LIBC for dynamic build>
Where is that LIBC.LIB which you gave me the link for?
Isn't it from msvc2005?

Cod-Father

TWell

#51
libc.lib is a static library.
libc.lib can found from Windows NT 5.2 DDK (Server 2003 SP1) and x64 from 5.2.3790.2075.51.PlatformSDK_Svr2003R2_rtm too.

I can't inspect Vista DDK :(

habran

Hi TWell,
The one you build the last is working fine but I can't test for the speed
I have fixed some minor errors in hll.c and added a new feature to the .SWITCH block, so we will upgrade tonight or tomorrow.
If you give me your email address I will send you new hll.c for testing
Cod-Father

TWell

#53
With VisualCppBuildTools2015
5.418s        asmc
8.596s        HJWasm64.exe
12.372s       hjwa64-2015.exe

Not bad eh??

habran

VS2015 sucks :(
I prefer this one:
OxPT_Assembler HJWasm32 ; 2.7
OxPT_Assembler HJWasm64 ; 3.0 secs, and yes, it's 64-bit code
OxPT_Assembler AsmC ; 2.5 secs

:t
Cod-Father

jj2007

Quote from: jj2007 on May 19, 2016, 10:03:10 PMIn practice, I use AsmC for testing, not only because it's fastest but also because it gives direct feedback, i.e. you can see
Assembling: C:\Masm32\MasmBasic\libtmpAA.asm
Assembling: C:\Masm32\MasmBasic\libtmpAB.asm
Assembling: C:\Masm32\MasmBasic\libtmpAC.asm
Assembling: C:\Masm32\MasmBasic\libtmpAD.asm

while it is assembling. JWasm and ML 6.15 do the same, most others let you wait until everything is complete, which is less nice to watch. But that is a very personal preference, of course 8)

Btw it would be nice if Nidud or Habran or both could identify the innermost loop that makes the assembly slow. We are experts here in speeding up C code... :badgrin:

Re "others let you wait until everything is complete": would fflush(..) after each module help?

habran

New HJWasm uploaded on Terraspace with some bug fixes and hopefully some speed improvement for the .SWITCH block hll
Cod-Father

jj2007

Timings for building the MB library are unchanged.

Intel(R) Core(TM) i5-2450M CPU @ 2.50GHz
Assembled with HJWasm32
20 ms   case 260, MB Switch_ table
197 ms  case 260, MB Switch_ chain
370 ms  case 260, Masm32 switch
46 ms   case 260, HJWasm .Switch

19 ms   case 196, MB Switch_ table
146 ms  case 196, MB Switch_ chain
277 ms  case 196, Masm32 switch
46 ms   case 196, HJWasm .Switch

19 ms   case 132, MB Switch_ table
104 ms  case 132, MB Switch_ chain
186 ms  case 132, Masm32 switch
46 ms   case 132, HJWasm .Switch

19 ms   case 68, MB Switch_ table
62 ms   case 68, MB Switch_ chain
98 ms   case 68, Masm32 switch
46 ms   case 68, HJWasm .Switch

19 ms   case 4, MB Switch_ table
20 ms   case 4, MB Switch_ chain
5 ms    case 4, Masm32 switch
46 ms   case 4, HJWasm .Switch

2989    bytes for MbTable
4840    bytes for MbChain
4799    bytes for Masm32
5729    bytes for hjwasm

habran

Thanks JJ,
It looks like we have at least stable speed, considering it is written in C language it is pretty good.
It is probably possible to make it little bit faster with some more optimization.
Cod-Father

habran

Hi JJ,
Can you please test this build with the same sources you did with the last one to see if there is the difference in speed?
Cod-Father