News:

MASM32 SDK Description, downloads and other helpful links
MASM32.com New Forum Link
masmforum WebSite

MASM32 version 11 pre-Release 3

Started by hutch--, November 24, 2011, 07:36:25 AM

Previous topic - Next topic

hutch--

I have done about as much work as I feel like on this version and it seems to be up and working OK with all of the test code I have available. Its major changes are unicode support along with a new include file format. Many of the macros support either ascii or unicode depending on the __UNICODE__ equate. There are additional library modules to provide further unicode support and the WINDOWS.INC - WINEXTRA.INC include file pair have been updated with a large number of equates and structures. The CG.EXE code tool produces an output that can be built as either ASCII or UNICODE but uncommenting the __UNICODE__ equate.

I have just done about 2 months of work on this version so i am not all that interested in redesigns or smartarse wisecracks but if I can get any useful feedback in the short term I will fix any obvious problems but I want to get this version out reasonably soon as I am just tired of looking at it.

Use the link below.
Download site for MASM32      New MASM Forum
https://masm32.com          https://masm32.com/board/index.php

jj2007

Hutch,

On my P4 WinXP SP2, installation worked just fine with OutLook and eight Firefox windows open.

MasmBasic is a very tough test, with loads of exotic macros, but it installed just fine (but it needs ml 6.15 or Jwasm, of course).

Problems with JWasm - many errors of this kind:
***********
ASCII build
***********

winextra.inc(22454) : Error A2151: Unexpected literal found in expression:
winextra.inc(22454): Included by
  windows.inc(25081): Included by
   masm32rt.inc(38): Included by
    MasmBasic.inc(2): Included by
     Tmp_File.asm(1): Main line code


My compliments - I know that adding Unicode was extremely hard work, and prone to break existing code. You seem to have succeeded so far :U

hutch--

#2
Thanks for that, it was an incorrect data type, MMVERSION <> should have been MMVERSION ? as it is equated to a UINT which is a DWORD. Just to test it would you do a global replace in winextra.inc changing "MMVERSION <>" to "MMVERSION ?" and see if the error goes away.

This is the replacement.

this has been replaced with the link below.
Download site for MASM32      New MASM Forum
https://masm32.com          https://masm32.com/board/index.php

qWord

hi,
the GDI+ definitions are not complete and cause a conflict when using with my own include. In the attachment a file containting all needed definitions.

qWord
FPU in a trice: SmplMath
It's that simple!

hutch--

Plug this replacement for winextra.inc and see if this works correctly, it has your file added in place of the gdiplus version before it.
Download site for MASM32      New MASM Forum
https://masm32.com          https://masm32.com/board/index.php

jj2007

Quote from: hutch-- on November 24, 2011, 11:35:51 AM
Plug this replacement for winextra.inc and see if this works correctly, it has your file added in place of the gdiplus version before it.

Works like a charm, no more problems with JWasm. I suggest a minor change:
ifndef Masm32verbose
Masm32verbose=1
endif

if Masm32verbose
      IFDEF __UNICODE__
        echo     
        echo *************
        echo UNICODE Build
        echo *************
        echo     
      ELSE
        echo     
        echo ***********
        echo ASCII build
        echo ***********
        echo     
      ENDIF
ENDIF


The echos clutter my output window ;-)

evlncrn8

will the libs be made with /safeseh enabled? (looking forward to that if they are)

Vortex

Hi Hutch,

Thanks for this new release.

The file \masm32\macros\lst.txt is containing some NULL characters. Running lst.exe, the output of the text file in qeditor displays some small box symbols identified as NULL chars.


H:\masm32\macros>debug lst.txt
-d
1500:0100  72 65 70 61 72 67 20 4D-41 43 52 4F 20 61 72 67   reparg MACRO arg
1500:0110  00 0D 0A 72 65 70 61 72-67 76 20 4D 41 43 52 4F   ...repargv MACRO
1500:0120  20 61 72 67 00 0D 0A 72-65 70 61 72 67 6F 66 20    arg...repargof
1500:0130  4D 41 43 52 4F 20 61 72-67 00 0D 0A 74 73 74 61   MACRO arg...tsta
1500:0140  72 67 20 4D 41 43 52 4F-20 61 72 67 00 0D 0A 61   rg MACRO arg...a
1500:0150  72 67 63 6F 75 6E 74 20-4D 41 43 52 4F 20 61 72   rgcount MACRO ar
1500:0160  67 73 3A 56 41 52 41 52-47 00 0D 0A 67 65 74 61   gs:VARARG...geta
1500:0170  72 67 20 4D 41 43 52 4F-20 6E 75 6D 3A 52 45 51   rg MACRO num:REQ

Ramon Sala

Hutch,

Easy Code, a MASM32 project, compiles, links and works perfectly well with this new pre-release 2.

Congratulations!

Ramon
Greetings from Catalonia

hutch--

JJ,

Will this do the job ? i want it there by default but specifying "__NO_NOISE__" before the include files shuts it up.



    IFNDEF __NO_NOISE__

      IFDEF __UNICODE__
        echo     
        echo *************
        echo UNICODE Build
        echo *************
        echo     
      ELSE
        echo     
        echo ***********
        echo ASCII build
        echo ***********
        echo     
      ENDIF

    ENDIF


Erol,

Thanks, its fixed, needed a -1 at the end of the algo that produced each line of text.

Ramon,

Thanks for the testing, I sent you an email on the ntoskrnl problem that I hope fixes it.
Download site for MASM32      New MASM Forum
https://masm32.com          https://masm32.com/board/index.php

jj2007

Quote from: hutch-- on November 24, 2011, 10:59:08 PM
JJ,

Will this do the job ? i want it there by default but specifying "__NO_NOISE__" before the include files shuts it up.

Perfect, thanks :U

Ramon Sala

Hutch,

After following the instructions in the email you sent me, the ntoskrnl problem is solved.

Thanks!
Greetings from Catalonia

hutch--

I have done all the mods mentioned, tracked down some duplicates in the WINDOWS.INC file that were stopping POASM from building files, fixed a typo in MASM32.INC and it all seems to be working correctly at the moment.

www.masm32.com/v11beta/v11pr3.zip

I would like to be able to get this released so if you find any quirks please let me know quickly.
Download site for MASM32      New MASM Forum
https://masm32.com          https://masm32.com/board/index.php

jj2007

- Missing in \masm32\include\htmlhelp.inc:
HtmlHelpA PROTO :DWORD,:DWORD,:DWORD,:DWORD

- there is an odd "error A2002:cannot have more than one ELSE clause per IF block" that I get with the attachment:
.listall
nops 9
if 1
   invoke Sleep, 100
   counter_begin LOOP_COUNT, HIGH_PRIORITY_CLASS
      invoke crt__strrev, addr Src
   counter_end
   if useMB and 0   ; put 0 to see....
      Print str$(eax), 9, "cycles for crt__strrev", 13, 10
   else         ; ... how it chokes with Masm32 print
      print str$(eax), 9, "cycles for crt__strrev", 13, 10
   endif
else
   invoke Sleep, 100
   counter_begin LOOP_COUNT, HIGH_PRIORITY_CLASS
      push offset Src
      call RevString2a
   counter_end
   print str$(eax), 9, "cycles for RevString2a", 13, 10
endif
nops 9
.nolist

It might have to do with line 208 in the attached tmp.lst (there is no lbl1 set in the listing):
IFNDEF __UNICODE__
     2               goto lbl1

Strangely enough, it assembles fine with a) JWasm, b) if useMB is set to 0 or c) if I redefine the chr$ macro on top of the file.

This version inserted in \masm32\macros\Macros.asm works fine:

chr$ MACRO any_text:VARARG
LOCAL txtname,lbl1,lbl2
.data
  IFNDEF __UNICODE__
txtname db any_text,0
align 4
.code
EXITM <OFFSET txtname>
  ELSE
WSTR txtname,any_text
align 4
.code
EXITM <OFFSET txtname>
  ENDIF
ENDM

hutch--

JJ,

No error here.


Intel(R) Core(TM)2 Quad CPU    Q9650  @ 3.00GHz (SSE4)
******** timings for unaligned strings, useMB=0
620     cycles for crt__strrev
268     cycles for RevString2c
267     cycles for RevString2d
273     cycles for RevString2e
267     cycles for RevString3
226     cycles for Masm32 szRev
702     cycles for FlipFlop

******** timings for 16-byte aligned strings:
130     cycles for RevString2a
129     cycles for RevString2c
120     cycles for RevString2d
139     cycles for RevString2e
119     cycles for RevString3
210     cycles for Masm32 szRev
62      cycles for RevLingo (GPF for non-aligned strings)
701     cycles for FlipFlop

This is a string, 100 characters long, that serves a variety of purposes, such a
s testing my algos..
..sogla ym gnitset sa hcus ,sesoprup fo yteirav a sevres taht ,gnol sretcarahc 0
01 ,gnirts a si sihT


..sogla ym gnitset sa hcus ,sesoprup fo yteirav a sevres taht ,gnol sretcarahc 0
01 ,gnirts a si sihT
This is a string, 100 characters long, that serves a variety of purposes, such a
s testing my algos..


Sizes:
64      RevString
64      RevString2a
67      RevString2b
67      RevString2c
67      RevString2d
63      RevString2e
0       MbFlipP
67      RevString3
64      RevStr
64      szRev
107     RevLingo
23      FlipFlop

--- ok ---
Download site for MASM32      New MASM Forum
https://masm32.com          https://masm32.com/board/index.php