Piszę procedury obsługi przerwań dla x86_64. ABI określa, że przed wywołaniem funkcji C muszę wyrównać stos do 16 bajtów. ISA x86_64 określa, że przy wejściu do ISR mój stos jest wyrównany do 8 bajtów. Potrzebuję wyrównać wskaźnik stosu do 16 bajtów. Problem polega na tym, że po powrocie z mojej funkcji C, muszę odzyskać (potencjalnie) niewyrównany wskaźnik stosu, aby móc poprawnie wrócić z mojego przerwania.x86_64 wyrównaj stos i odzyskaj bez zapisywania rejestrów
Zastanawiam się, czy istnieje sposób, aby to zrobić bez korzystania z rejestru ogólnego przeznaczenia?
Przechowywanie SP na stercie? –
@ H2CO3 To brzmi jak okropny pomysł. W tym kontekście również nie mam pojęcia kupy. – dschatz
OK, to był tylko pomysł na qiick. –