Another macro question... So I created some working code working with real4 (see previous macro posts fom me..) and now I also wanted to created a similar macro for real8. I now have this :
procR8 MACRO prc:REQ,args:VARARG
LOCAL item,txt,temp
txt TEXTEQU <prc>
FOR item, <args>
IF ISFLOAT?(item) ;name says it all.
temp EQU offset <FLT8(item)>
% echo temp
txt CATSTR txt,<,> , <[%temp]> ,<,>, <[%temp+4]> ;Something wrong here
ELSE
txt CATSTR txt,<,> , <item>
ENDIF
ENDM
%echo <txt>
invoke txt
ENDM
below is the FLT8 macro but it's not so important to read this (just in case..)
gfl_glb_cntr8 = 0
FLT8 MACRO lit:REQ ;Thanks to qword!
LOCAL lbl
grc_const_found8 = 0
grc_cntr8 = 0
WHILE grc_cntr8 LT gfl_glb_cntr8
% IFIDN <&lit>,<@CatStr(<const_flt8__>,%grc_cntr8)>
grc_const_found8 = -1
EXITM
ENDIF
grc_cntr8 = grc_cntr8 + 1
ENDM
IF grc_const_found8 EQ 0
.const
lbl REAl8 lit
.code
@CatStr(<const_flt8__>,%gfl_glb_cntr8) TEXTEQU <&lit>
@CatStr(<const_flt8_lbl__>,%gfl_glb_cntr8) TEXTEQU <lbl>
gfl_glb_cntr8 = gfl_glb_cntr8 + 1
EXITM <lbl>
ELSE
EXITM @CatStr(<const_flt8_lbl__>,%grc_cntr8)
ENDIF
ENDM
So in the procR8 macro I would like to push the QWord / real8 value onto the stack. Because I read that it is not possible to push 64 bits directly onto the stack I decided to get the address of the real8 value and then use addres,address+4 in the invoke at the end. But clearly the code I have is not getting/using that address in the right way. What would be the correct way to do this ?
thanks in advance (once again..)
Quote from: gelatine1 on October 24, 2015, 07:24:35 AMtemp EQU offset <FLT8(item)>
RTFM
temp TEXTEQU FLT8(item)
...
push temp[4]
push temp[0]
Quote from: qWord on October 26, 2015, 01:25:17 AM
RTFM
Thanks, What manual do you suggest ? the following code was what did the trick
temp TEXTEQU FLT8(item)
...
push dword ptr temp[4]
push dword ptr temp[0]
he's probably refering to the masm programmers ref manual
which isn't particularly well written in my opinion, but, the info is there if you read it enough times
The user Shosen from the old board did create PDFs from the original Word Documents (http://www.masmforum.com/board/index.php?topic=5433.45). I did upload the zip file again: MASM_6.1_Manuals_[High_Quality_PDF] (http://www.file-upload.net/download-11002049/MASM_6.1_Manuals_High_Quality_PDF.zip.html)
To learn macro writing, first read Chapter 9 in the Programmer's guide.
If syntax questions come up, also take a look in the MASM Reference (Reference.pdf).
@Qword:
Do you have MASM_6.1_Manual_Artworks_[EPS_Format].zip archive that Shosen was refering to in that thread?