You can perfectly write 64-bit code with HJWasm or AsmC and polink (from the Masm
32 SDK) alone. For example, in
RichMasm, menu File/New Masm source, "Dual 32/64 bit console/
GUI templates that compile both as 64 and 32-bit applications" is a simple Window that builds fine with all our assemblers and polink (btw also as 32-bit). It does build also with link.exe version 10, but it will crash with the wrong options, see reply #5 below.
There is also the
crippleware thread; the biggest problem imho is that we now have, thanks to Hutch, a fairly complete 64-bit SDK, with the only caveat that it will work only for Microsoft's crippleware assembler, because the others will choke on things like
.if eax{=eax.
In contrast, RichMasm uses the Masm32 includes to produce a set of macros and includes (JBasic.inc) that work perfectly for both 32- and 64-bit code. When used with HJWasm/AsmC, you have the usual high level stuff, .if / .else /.endif with standard
.if eax>=edx syntax etc., when used with ML64, you need
jxx label instead, which is fine for hello world proggies imho but a PITA for real projects.
JBasic.inc features
jinvoke, an invoke substitute that does check your parameter list and will choke if you provide CreateWindowEx with ten instead of eleven parameters. However, it has only limited macro support (Switch_, Print, Input, Chr$, Str$, Hex$, Val, MsgBox, ...). On the bright side, it does have a powerful debug macro, see
deb.