... and use the logical names during setup. This seems to be the
convention I've followed elsewhere and it makes some sense as
(a) establishing a target for the following setup code to aim for,
and (b) giving a visual indication of how well we're getting there.
// return zero if we can; otherwise fill with zero and return -1.
#if CPUFAM_X86
// return zero if we can; otherwise fill with zero and return -1.
#if CPUFAM_X86
mov eax, [SP + 16]
mov ecx, [SP + 20]
mov eax, [SP + 16]
mov ecx, [SP + 20]
#endif
#if CPUFAM_AMD64 && ABI_SYSV
#endif
#if CPUFAM_AMD64 && ABI_SYSV
pushreg rbx
mov eax, esi
mov ecx, edx
pushreg rbx
mov eax, esi
mov ecx, edx
#endif
#if CPUFAM_AMD64 && ABI_WIN
#endif
#if CPUFAM_AMD64 && ABI_WIN
mov eax, edx
mov ecx, r8d
mov eax, edx
mov ecx, r8d
#if CPUFAM_X86
# define Z_OUT edi
pushreg edi
#if CPUFAM_X86
# define Z_OUT edi
pushreg edi
mov ecx, [esp + 12]
#endif
#if CPUFAM_AMD64 && ABI_SYSV
mov ecx, [esp + 12]
#endif
#if CPUFAM_AMD64 && ABI_SYSV