Author Topic: HJWasm Releases  (Read 95284 times)

hutch--

  • Administrator
  • Member
  • ******
  • Posts: 10583
  • Mnemonic Driven API Grinder
    • The MASM32 SDK
Re: HJWasm Releases
« Reply #210 on: January 31, 2016, 01:31:26 PM »
Hey guys,

You can have more than 1 topic, that's what the sub forum is for, HJWASM.  :biggrin:
hutch at movsd dot com
http://www.masm32.com    :biggrin:  :skrewy:

Vortex

  • Member
  • *****
  • Posts: 2794
Re: HJWasm Releases
« Reply #211 on: January 31, 2016, 08:39:38 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

  • Member
  • ****
  • Posts: 893
    • Uasm
Re: HJWasm Releases
« Reply #212 on: January 31, 2016, 09:29:57 PM »
Hi,

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

Cheers,
John

GoneFishing

  • Member
  • *****
  • Posts: 1072
  • Gone fishing
Re: HJWasm Releases
« Reply #213 on: January 31, 2016, 10:57:58 PM »
 GCC Release : no warnings
 GCC Debug    :
Code: [Select]
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

  • Member
  • ****
  • Posts: 893
    • Uasm
Re: HJWasm Releases
« Reply #214 on: February 01, 2016, 04:28:06 AM »
I'll have a look into these tomorrow :) I guess 15 pages is enough, we should start a new thread.

GoneFishing

  • Member
  • *****
  • Posts: 1072
  • Gone fishing
Re: HJWasm Releases
« Reply #215 on: February 01, 2016, 04:30:26 AM »
ok :)

johnsa

  • Member
  • ****
  • Posts: 893
    • Uasm
Re: HJWasm Releases
« Reply #216 on: February 03, 2016, 10:47:49 PM »
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

  • Member
  • ****
  • Posts: 743
Re: HJWasm Releases
« Reply #217 on: February 03, 2016, 11:12:28 PM »
With this:
Code: [Select]
@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:
Code: [Select]
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

  • Member
  • *****
  • Posts: 13957
  • Assembly is fun ;-)
    • MasmBasic
Re: HJWasm Releases
« Reply #218 on: February 04, 2016, 12:32:40 AM »
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

  • Member
  • ****
  • Posts: 893
    • Uasm
Re: HJWasm Releases
« Reply #219 on: February 04, 2016, 12:42:04 AM »
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

  • Member
  • ****
  • Posts: 893
    • Uasm
Re: HJWasm Releases
« Reply #220 on: April 10, 2016, 06:43:52 PM »
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

  • Member
  • *****
  • Posts: 2794
Re: HJWasm Releases
« Reply #221 on: April 10, 2016, 07:03:42 PM »
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

  • Member
  • *****
  • Posts: 1228
    • uasm
Re: HJWasm Releases
« Reply #222 on: April 10, 2016, 07:16:56 PM »
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

  • Member
  • *****
  • Posts: 2794
Re: HJWasm Releases
« Reply #223 on: April 10, 2016, 07:43:10 PM »
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 :

Quote
HJWasm 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

  • Member
  • *****
  • Posts: 1228
    • uasm
Re: HJWasm Releases
« Reply #224 on: April 10, 2016, 09:04:57 PM »
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