In base al manuale ARM, dovrebbe essere possibile accedere ai registri sovrapposti per una modalità CPU specifica come, ad esempio, "r13_svc". Quando provo a fare questo gcc mi grida con il seguente errore:Accedere in modo esplicito a registri elevati su ARM
espressione immediata richiede un prefisso # - `mov r2, sp_svc'
Cosa c'è di sbagliato?
Aggiornamento. Il testo che segue dal Manuale ARM Architettura di riferimento per ARMv5 e ARMv6 mi ha portato a credere che sia possibile, la sezione A2.4.2:
Registers R13 and R14 have six banked physical registers each. One is used in User and System modes, and each of the remaining five is used in one of the five exception modes. Where it is necessary to be specific about which version is being referred to, you use names of the form: R13_mode R14_mode where mode is the appropriate one of usr, svc (for Supervisor mode), abt, und, irq and fiq.
Lo capisco. Si prega di consultare l'aggiornamento sopra per quanto riguarda il testo dal Manuale di riferimento Architettura ARM – Demiurg
@Demiurg, quel paragrafo non si riferisce alla scrittura del codice, ma solo alle convenzioni del documento. Dato che i registri sovrapposti sono diversi, devono avere nomi univoci in modo che nessuno possa confondersi. Non sta cercando di implicare che potresti usare quei nomi nel tuo codice assembly. Le sezioni relative alle istruzioni e alle modalità di indirizzamento più avanti nel libro sono più chiare su ciò che puoi o non puoi fare. –
Probabilmente hai ragione – Demiurg