ML615, ml614 have such problem...
type bl ;; returns wrong value if program includes too many macros, so does dl and ch...
while ml611 is ok.
how could that happen?
6.14 has the same bug. I think its in the Laboratory but there is a mcro that Greg and I worked on that gets it dead right for every register from byte size to XMM. It was fixed in version 7.00.
I could not find the link so here is the macro.
; *************************************
; Return a register size in BYTES or *
; 0 if the argument is not a register *
; *************************************
regsize MACRO item
LOCAL rv,ln
rv = 0
ln SIZESTR <item>
IF ln EQ 2
goto two
ELSEIF ln EQ 3
goto three
ELSEIF ln EQ 4
goto four
ELSEIF ln EQ 5
goto five
ELSEIF ln EQ 6
goto six
ELSEIF ln EQ 8
goto eight
ELSE
goto notreg
ENDIF
:two
for arg,<al,ah,bl,bh,cl,ch,dl,dh>
IFIDNI <arg>,<item>
rv = 1
EXITM
ENDIF
ENDM
IF rv NE 0
EXITM %rv
ENDIF
for arg,<ax,bx,cx,dx,sp,bp,si,di>
IFIDNI <arg>,<item>
rv = 2
EXITM
ENDIF
ENDM
IF rv NE 0
EXITM %rv
ENDIF
goto notreg
:three
for arg,<eax,ebx,ecx,edx,esp,ebp,esi,edi>
IFIDNI <arg>,<item>
rv = 4
EXITM
ENDIF
ENDM
IF rv NE 0
EXITM %rv
ENDIF
for arg,<st0,st1,st2,st3,st4,st5,st6,st7>
IFIDNI <arg>,<item>
rv = 10
EXITM
ENDIF
ENDM
IF rv NE 0
EXITM %rv
ENDIF
for arg,<mm0,mm1,mm2,mm3,mm4,mm5,mm6,mm7>
IFIDNI <arg>,<item>
rv = 8
EXITM
ENDIF
ENDM
IF rv NE 0
EXITM %rv
ENDIF
goto notreg
:four
for arg,<xmm0,xmm1,xmm2,xmm3,xmm4,xmm5,xmm6,xmm7>
IFIDNI <arg>,<item>
rv = 16
EXITM
ENDIF
ENDM
IF rv NE 0
EXITM %rv
ENDIF
goto notreg
:five
for arg,<mm(0),mm(1),mm(2),mm(3),mm(4),mm(5),mm(6),mm(7)>
IFIDNI <arg>,<item>
rv = 8
EXITM
ENDIF
ENDM
IF rv NE 0
EXITM %rv
ENDIF
for arg,<st(0),st(1),st(2),st(3),st(4),st(5),st(6),st(7)>
IFIDNI <arg>,<item>
rv = 10
EXITM
ENDIF
ENDM
IF rv NE 0
EXITM %rv
ENDIF
goto notreg
:six
for arg,<xmm(0),xmm(1),xmm(2),xmm(3),xmm(4),xmm(5),xmm(6),xmm(7)>
IFIDNI <arg>,<item>
rv = 16
EXITM
ENDIF
ENDM
IF rv NE 0
EXITM %rv
ENDIF
:eight
for arg,<edx::eax,ecx::ebx>
IFIDNI <arg>,<item>
rv = 8
EXITM
ENDIF
ENDM
IF rv NE 0
EXITM %rv
ENDIF
:notreg
EXITM %rv
ENDM
;---------------------------------------------------
See also http://www.masmforum.com/simple/index.php?topic=1026.0