De acuerdo con el manual ARM, debería ser posible acceder a los registros bancarizados para un modo de CPU específico como, por ejemplo, "r13_svc". Cuando trato de hacer esto gcc me grita con el siguiente error:Acceso explícito a registros bancarizados en ARM
expresión inmediata requiere un prefijo # - `r2 mov, sp_svc'
¿Qué pasa?
Actualización. El siguiente texto del Manual de Referencia para la arquitectura ARM y ARMv5 ARMv6 me llevó a creer que es posible, la sección 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.
Entiendo eso. Consulte la actualización anterior sobre el texto del Manual de referencia de Arquitectura de ARM – Demiurg
@Demiurg, ese párrafo no se refiere a escribir código, solo a las convenciones del documento. Dado que los registros bancarizados son diferentes, deben tener nombres únicos para que no todos estén confundidos. No está tratando de dar a entender que pueda usar esos nombres en su código de ensamblado. La sección de referencia de instrucciones y modos de direccionamiento más adelante en el libro es más clara sobre lo que puede y no puede hacer. –
Probablemente esté en lo correcto – Demiurg