Eine Möglichkeit wäre z.B. folgendes:
Du hast eine Sturktur, in der Platz für alle 32 Register, SP und PC ist.
Diese stellt den Zustand eines Threds dar. Dann gibt es eine Liste von
Zeigern auf diese Sturkturen, mit in deinem Fall 3 elementen, so wie
einen Index, der immer auf das momentan verwendete Element zeigt.
In der ISR liest du den Index aus und speicherst alle Register, SP und
PC in den aktuellen Eintrag. Dann wird der Index erhöht (FIFO-Prinzip)
und zeigt auf den nächsten auszuführenden Thread. es werden dann alle
Register aus der Sturktur gelesen, der SP gesetz sowie der gespicherte
PC als letzes auf den Stack gelegt. Mit einem reti wird dann "zurück" in
den nächste Task gesprungen. usw...
Jeder Thread muss natürlich einen eigenen Stack haben.
MfG Mark