News:

Masm32 SDK description, downloads and other helpful links
Message to All Guests

Main Menu

HJWasm Releases

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

Previous topic - Next topic

fearless

Yes, text is changed but link is to http://www.terraspace.co.uk/hjwasm213_x86.zip and http://www.terraspace.co.uk/hjwasm213_x64.zip

Here are the direct links that work:
http://www.terraspace.co.uk/hjwasm214_x86.zip
http://www.terraspace.co.uk/hjwasm214_x64.zip


Vortex

Thanks habran, I downloaded v2.14

johnsa

Hi,

2.14 Update published today into git and binary packages on the site.. changes are:

1) Checking for repetition of cases so that it will report an error if case already exists in the switch block
2) Improve allocation of memory for cases in SWITCH and avoiding 64bit variables in hex2dec (caused general failure of 32bit version).
3) Bug fix for /Zi switch in 32bit.

Example switch now using character constants:


mov rax, "oword"
  .switch rax
  .case "byte"
  mov  rdx, "byte"
  .break
  .case "word"
  mov  rdx, "word"
  .break
  .case "dword"
  mov rdx, "dword"
  .break
  .case "qword"
  mov rdx, "qword"
  .break
  .case "oword"
  mov rdx, "oword"
  .break
  .default
  mov edx, 0
  .break
  .endswitch


qWord

The HIGHWORD operator is still broken:
x = -1
%echo @CatStr(%HIGH32 (HIGHWORD (x SHL 32)))

Should return zero. Use opnd1->llvalue for storing the result.

[[You might also correct your gitignore file, because directories are wrongly specified which cause build files to be added to version control]]
MREAL macros - when you need floating point arithmetic while assembling!

habran

qWord, do you mean here:
Quoteif( opnd2->instr != EMPTY ) {
        if ( opnd2->sym ) {
            switch ( opnd2->instr ) {
            case T_LOW:
            case T_HIGH:
                opnd1->llvalue = 1;
                break;
            case T_LOWWORD:
            case T_HIGHWORD:
                //case T_SEG: /* masm returns 0 for TYPE SEG <label>! */
                opnd1->llvalue = 2;
                break;
#if LOHI32
            case T_LOW32:
            case T_HIGH32:
                opnd1->llvalue = 4;
                break;
#endif

Cod-Father

qWord

In in function highword_op convert line
Quote from: https://github.com/Terraspace/HJWasm/blob/master/expreval.c#L1557opnd1->value = (opnd1->value >> 16) & 0xFFFF; /* ASMC v2.14 (fix borrowed from nidud) */
to
Quoteopnd1->llvalue = (opnd1->value >> 16) & 0xFFFF; /* ASMC v2.14 (fix borrowed from nidud) */
MREAL macros - when you need floating point arithmetic while assembling!

habran

Thanks qWord, will be fixed in next release :t
Cod-Father