code: def setRegisterNumbersForTemporaries(ast, start):
      
      seen = 0
      signature = ''
      aliases = []
      for node in ast.postorderWalk():
          if node.astType == 'alias':
              aliases.append(node)
              node = node.value
          if node.reg.immediate:
              node.reg.n = node.value
              continue
          reg = node.reg
          if reg.n is None:
              reg.n = start + seen
              seen += 1
              signature += reg.node.typecode()
      for node in aliases:
          node.reg = node.value.reg
      return start + seen, signature
docs: Assign register numbers for temporary registers, keeping track of
      aliases and handling immediate operands.