News:

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

Main Menu

HJWasm Releases

Started by johnsa, January 16, 2016, 08:24:52 AM

Previous topic - Next topic

hutch--

Hey guys,

You can have more than 1 topic, that's what the sub forum is for, HJWASM.  :biggrin:

Vortex

Quote from: johnsa on January 31, 2016, 12:33:05 AM
Quote from: Vortex on January 30, 2016, 09:03:37 PM
Hello johnsa,

I mean, a batch file or a tool to create the import libraries from module definition files. You could convert a set of import libraries to .def files.
The purpose is to supply HJWASM with include files and import libraries.

Do you mean to include wininc with hjwasm (but instead of just the asm include files you want the lib's too?)

Hello johnsa,

TWell is right. WinInc208 is containing all the necessary batch files to create the import libraries. I missed that. Thanks for your help.

johnsa

Hi,

Github and binary packages on the website updated (31st Jan) to include the DR(x) register fix.

Cheers,
John

GoneFishing

 GCC Release : no warnings
GCC Debug    :
reswords.c: In function 'DumpResWords':
reswords.c:1304:3: warning: format '%u' expects argument of type 'unsigned int', but argument 2 has type 'long unsigned int' [-Wformat=]
   printf("\nitems in InstrTable[]: %u\n", sizeof(InstrTable) / sizeof(InstrTable[0]));
   ^
reswords.c:1306:5: warning: format '%u' expects argument of type 'unsigned int', but argument 2 has type 'long unsigned int' [-Wformat=]
     sizeof(optable_idx) / sizeof(optable_idx[0]), INS_FIRST_1 + 1, sizeof(ResWordTable) / sizeof(ResWordTable[0]) - 1);
     ^
reswords.c:1306:5: warning: format '%u' expects argument of type 'unsigned int', but argument 4 has type 'long unsigned int' [-Wformat=]
gcc -c -IH -D__UNIX__ -DDEBUG_OUT -g -o GccUnixD/safeseh.o safeseh.c
gcc -c -IH -D__UNIX__ -DDEBUG_OUT -g -o GccUnixD/segment.o segment.c
gcc -c -IH -D__UNIX__ -DDEBUG_OUT -g -o GccUnixD/simsegm.o simsegm.c
gcc -c -IH -D__UNIX__ -DDEBUG_OUT -g -o GccUnixD/string.o string.c
gcc -c -IH -D__UNIX__ -DDEBUG_OUT -g -o GccUnixD/symbols.o symbols.c
symbols.c: In function 'DumpSymbol':
symbols.c:807:5: warning: format '%p' expects argument of type 'void *', but argument 5 has type 'union <anonymous>' [-Wformat=]
     printf( "%-12s  %16" I64_SPEC "X %02X %8p %c %8p %s\n", type, value, sym->mem_type, dir->e, sym->ispublic ? 'X' : ' ', sym->name, sym->name );
     ^


Should I continue posting in this thread ?

johnsa

I'll have a look into these tomorrow :) I guess 15 pages is enough, we should start a new thread.

GoneFishing


johnsa

Updates:

1) vzeroall is now working, no longer encoding as vzeroupper

2) intptr_t has been replaced with size_t and seems to prevent build warnings and general failures during assembly on Win7,8.1 and 10.

3) vpsllq operands are now the right way around

4) HIGHWORD is working

5) OPATTR changes moved from switch -Zg to -Zne
OPATTR is working (more compatibly - string literals will return 0, immediates - 36) with switch -Zne

6) VBROADCASTSD needs VEX.W=0,  fixed to produce C4 E2 7D 19 01 instead of C4 E2 FD 19 01

7) A new OPTION EVEX:{0|1} has been added to enable assembly of avx512 code and the use of it's extended registers, previously hjwasm would accept zmm{n} or xmm16+
We're hoping that this already yields some performance increase in assembly time, but having it in place allows further optimisation back to original performance for non-AVX512 code.

8) Several issues from the regression tests fixed:
- SHLD syntax error
- ALIGN warning

9) Several other avx encoded shifts have corrected encodings.

10) We will be doing a full analysis of remaining AVX/VEX encodings and applying fixes for VPBROADCASTB/W/D today or tomorrow.

If anyone feels like testing the performance again to see if the evex option has had any impact yet.

TWell

With this:@SET SRC=..\HJWasm-master
@SET CC=gcc -c -m64 -I..\HJWasm-master\H -DWIN64=1 -DDEBUG_OUT=1
@REM hjwasm64.exe:
for %%c in (%SRC%\*.c) do %CC% %%c

gcc -s main.o apiemu.o assemble.o assume.o atofloat.o backptch.o bin.o branch.o cmdline.o codegen.o coff.o condasm.o context.o cpumodel.o data.o dbgcv.o directiv.o elf.o end.o equate.o errmsg.o expans.o expreval.o extern.o fastpass.o fixup.o fpfixup.o hll.o input.o invoke.o label.o linnum.o listing.o loop.o lqueue.o macro.o mangle.o memalloc.o msgtext.o omf.o omffixup.o omfint.o option.o parser.o posndir.o preproc.o proc.o queue.o reswords.o safeseh.o segment.o simsegm.o string.o symbols.o tbyte.o tokenize.o trmem.o types.o -o hjwasm64.exe
only these warnings and note:C:\HJWasm\gcc>gcc -c -m64 -I..\HJWasm-master\H -DWIN64=1 -DDEBUG_OUT=1 ..\HJWasm-master\trmem.c
..\HJWasm-master\trmem.c: In function 'formCodePtr':
..\HJWasm-master\trmem.c:187:26: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
..\HJWasm-master\trmem.c: In function 'trPrt':
..\HJWasm-master\trmem.c:219:41: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
..\HJWasm-master\trmem.c:233:37: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
..\HJWasm-master\trmem.c: In function 'tm_Init':
..\HJWasm-master\trmem.c:777:19: warning: passing argument 6 of '_trmem_open' from incompatible pointer type [enabled by default]
..\HJWasm-master\trmem.c:345:12: note: expected 'void (*)(struct FILE *, const char *, size_t)' but argument is of type 'void (*)(struct FILE *, const char *, unsigned int)'

jj2007

Version 3 Feb tested, opattr issues are OK now :t
(except the -dword ptr [ebx], of course)

No changes in speed, virtually identical +- 0.1% compared to version 2 Feb.

johnsa

Ok thanks for testing that!
With some thought we should be able to make use of this option now to reduce the overhead of all the evex testing!

johnsa

V2.14 is available for download!

Changes:

1) Some bug fixes and improvements to stack frame generation in x64.
2) Fixed a tokenization bug with C-style hex immediate values, so you can now use 0x.. style without issue in place of H.
3) (The big one): .SWITCH support added (Thank's to Habran's huge effort here, it will use if/else for <=4 cases, otherwise depending on the range of case values use a jump table or non-recursive binary search) so it's pretty optimal and similar to how you'd expect a decent C/C++ compiler to generate switch.

John

Vortex

Hello johnsa,

The download links are still pointing the old version 2.13 :

http://www.terraspace.co.uk/hjwasm213_x86.zip

http://www.terraspace.co.uk/hjwasm213_x64.zip


habran

Hi Vortex,
You have to reload a page, it happened to me as well
Click with the right button and chose 'reload', I suppose you know that, but maybe someone else doesn't
Cod-Father

Vortex

Hi habran,

The problem is not reloading the page. The links are not updated. Move the mouse over the text hjwasm214_x86.zip and you will see that it points http://www.terraspace.co.uk/hjwasm213_x86.zip

You need to place the mouse cursor over this line :

QuoteHJWasm 2.14 (32bit)    10/04/2016    hjwasm214_x86.zip    32bit Binary Package (Windows)

Here is the screenshot :

http://vortex.masmcode.com/figs/screen.PNG

In the buttom of the screen capture, you will see the link to the zip file hjwasm213_x86.zip

habran

You are right Vortex, it shows hjwasm13 but it is hjwasm14, just Johnsa forgot to change the name of folder
He will probably see this post and correct it.
However, hjwasm14 is inside and it works fine as it suppose to do 8)
Thanks for reporting it, good eyes mate :t
Cod-Father