... so many questions have arised.
Firstly: is there any predefined symbol which could tell me if ML64 is used? I mean something like
IFNDEF __ML_64
mov ecx, offset loop_lbl
ELSE
mov rcx, offset loop_lbl
ENDIF
You can use
__ML_64 = OPATTR rax
IF __ML_64
mov rcx, offset loop_lbl
ELSE
mov ecx, offset loop_lbl
ENDIF
Presumably you need to set a different instruction set at the top (ie. .386/486/etc.)
This can be retrieved with the @Cpu symbol. (I only have the MSDN documentation to go on so I can't help you out any more than that - try ECHOing it and see what happens)
Hi Dr. Manhattan,
I was thinking about similar solution. From your answer I assume there isn't such predefined symbol.
Hi zooba,
did you try it with ML64? I doubt it depends on the processor directive. You can have the lastest Pentium4 without 64-bit extensions. I'd expect that using ML64 I have to compile 64-bit code...
you can look inside exe for .386 .486 .586 .mmx strings if any new it will be there
those directives are not put into the exe.
which exe anyway?
According to msdn (http://msdn2.microsoft.com/en-us/library/xw102cyh.aspx), there is no new processor directive.
Ok, next question:
What about RIP-relative addressing? May the coder use this addressing explicitly, or ML64 choose itself between direct addressing and RIP-relative addressing?
RIP addressing is not supported by ml64. This page has more information: http://www.codegurus.be/codegurus/Programming/riprelativeaddressing_en.htm
Again thanks, Dr. Manhattan :U
I know this pages, but I didn't noticed they got updated :red