I do not yet
have differently sized types. Everything that is an immediate is passed
as int32_t. This might cause breakage on 64 bit platforms but I don't
know how to do the differently sized types, yet. I do not use the macros
directly, anymore. Instead, for each mnemonic, I use a C++ function. This
has produced many error messages. I fixed some, but I don't know whether
the fixes are correct. As far as I can remember (unfortunately I didn't
document my changes, so I'll probably redo them with documentation), I
added an _s32P macro which was used but missing and the LEAQmr
instruction for x86_64 which looks like this:
#define LEAQmr(MD, MB, MI, MS, RD) (_REXQmr(MB, MI, RD),
_OO_r_X (0x8d ,_r8(RD) ,MD,MB,MI,MS
))
There is a long list of instructions that do not work on
x86_64 because they do not exist or some other macro is being used
incorrectly. I am aware that x86_64 support is new, but even on i386-32,
many instructions do not exist. If you are interested, I can generate
this list.