Sto lavorando con l'assembly ARM, dove devo scrivere una subroutine per la quale sto seguendo la convenzione di chiamata ARM (questa dovrà essere integrata con qualche implementazione di livello superiore separata da qualche parte altro) per il passaggio di parametri e valori di ritorno. Ora qui è qualcosa che non sono sicuro in generale quando si lavora con l'assemblaggio.Passare parametri e valori di ritorno per una subroutine nell'assieme
Quindi dalla convenzione se capisco bene gli argomenti vengono passati in ordine a partire dai registri r0 - r4 e quindi per altri argomenti vengono utilizzati gli stack. I valori di ritorno sono passati a r0.
Ora, ecco quello di cui sono confuso. Se dovessi salvare il contesto di r0 e spegnerlo dopo, non c'è modo di restituire il risultato, l'unico modo per farlo è corrompere il primo argomento. C'è una soluzione in qualche modo? Grazie in anticipo ragazzi!
Quindi immagino che sia responsabilità del chiamante salvare il contesto di r0 prima di chiamare la funzione. – as3rdaccount
Dal link che hai postato: * "da r0 a r3: usato per contenere i valori degli argomenti passati a una subroutine, e anche i risultati restituiti da una subroutine" *. – m0skit0