Sto scrivendo le routine di gestione degli interrupt per x86_64. L'ABI specifica che prima di chiamare una funzione C devo allineare lo stack a 16 byte. L'ISA x86_64 specifica che alla voce di un ISR, il mio stack è allineato a 8 byte. Ho quindi bisogno di allineare il mio puntatore dello stack a 16 byte. Il problema è che al ritorno dalla mia funzione C, devo recuperare il puntatore stack (potenzialmente) non allineato in modo che possa tornare correttamente dal mio interrupt.x86_64 allinea lo stack e ripristina senza salvare i registri
Mi chiedo se esiste un modo per farlo senza utilizzare un registro generale?
Memorizzazione di SP nell'heap? –
@ H2CO3 Sembra un'idea terribile. Inoltre, non ho la nozione di heap in questo contesto. – dschatz
OK, era solo un'idea approssimativa. –