( Zsugabubus | 2024. 08. 03., szo – 22:19 )

Viszont mégsem úszod meg az Assembly-t, mert RET helyett IRET utasítással kell visszatérni a handlerből,

Ez Z80-on is így volt már, bár igazából a RETI csak azért kellett, hogy a külső interrupt vezérlő tudja, hogy vége a megszakításnak (prioritásoknál fontos ez). Viszont az NVIC handlerei az tényleg sima C ABI, pedig annak is kéne tudni, hogy mikor ér véget a handler (prioritások miatt szintén, NVIC-ben az N az Nestedet jelent). Nem tudom, ezt pontosan hogy csinálja, csak ennyit találtam róla:

A microcode present in the Cortex®-M4 automatically
pushes the context to the current stack and restores it
upon interrupt return.

Lehet, hogy valahogy megjelöli a stacken, hogy ez egy handlerhez tartózó return address, és így el tudja végezni a context visszaállítást/prioritások kezelését?