Es kommt drauf an, was Dein Assembler und Dein Controller "versteht".
Neben einem bereits erwähntem Stapel kommen Adressen im Ram in Frage,
die den Routinen als Parametern übergeben werden oder festgelegt sind.
Man muss z.B. drauf achten, das die Adressen nicht ins Flash oder EEProm
zeigen.
Wenn genug Speicher da ist, kann man damit beschleunigen.
Ohne Stapel eine Rekursion zu realisieren, ist etwas schwierig.
Man müsste dann schon die Anzahl Rekursionen erfassen, also
Adresse1.Rekursion, Adresse2.Rekursion, Stand aktualisieren usw..
Man kann ausrechnen, wann sich was lohnt. Man muss ausrechnen, ob genug
Speicher da ist.
Was sich nicht lohnt(wenn man auswählen kann), das ist, viele Daten auf
den Stack, mit Rekursion ist das noch ungünstiger. Man gibt dann Zeiger
von Blocks im Ram auf den Stack oder in ein Register.
Bei Rekursionen gibt es Besonderheiten.
Variable Daten können für jeden Aufruf individuell sein, oder es gibt
die Daten für eine Funktion/ein Unterprogramm oder für ein Programm nur
einmal.
Auch kann man kleinere Funktionen ins Ram kopieren, wo sie dann mit
eigenen Daten arbeiten.
Vergleich C-Assembler:
Beim 80X86 erlaubt Assembler oft eine Verdoppelung der
Arbeitsgeschwindigkeit von C Programmen. Das ist auch davon abhängig,
wieviele Register zur Verfügung stehen.
MfG und frohes neues