Replaces in a macro the uses of the given symbols by the use of registers.
If there are not enough registers available, replace each of the symbols from the start of the list until all registers are used.
Since 2.6.0, the list of symbols is optional. In that case,
ASREGS first recursively extracts all the symbols from given the macro and uses that list to do the replacement.