2015-08-13 2 views
0
mises en réserve

Je me demande comment peut-on aller sur l'accès aux registres mis en banque tels que sp_irq, sp_fiq, etc.Registres d'accès à AArch32

L'ARM v8 ARM décrit décrit un codage pour instructions MRS/MSR qui permet au programmeur pour accéder à ces registres directement, mais pour une raison quelconque MSR sp_irq, r0 ne compile pas car le nom du registre n'est pas reconnu.

Y a-t-il une option de compilateur qui me manque, est-ce que j'utilise la mauvaise syntaxe, ou est-ce que ce que je fais n'est même pas possible?

+0

@Notlikethat ARMv8 – squirem

+1

Ah, à droite. Vous allez devoir développer sur le peu utile "ne semble pas fonctionner", cependant. Voulez-vous dire que vous obtenez une erreur de l'assembleur? Autre chose? De quel toolchain parlons-nous même ici? – Notlikethat

+0

@Notlikethat Désolé à ce sujet, j'ai mis à jour la question. – squirem

Répondre

1

Puisque la question ne parle pas spécifier le mode CPU (32/64) et aucun compilateur spécifique, je vais essayer de répondre en fonction de mon expérience:

AARCH32: Il pourrait être supérieure/inférieure problème de cas. Essayez d'utiliser des combinaisons telles que SP_irq, sp_IRQ, SP_IRQ. J'avais rencontré des problèmes sur GCC en raison de cette question majuscule/minuscule. AARCH64: Les registres GP 64 bits ont un mappage direct vers des registres 32 bits. Il est expliqué dans Enregistrements de registre entre l'état AArch32 et l'état AArch64 du Manuel de référence de l'architecture ARM V8.

Par exemple. SP_irq < ==> X17

Espérons que cela aide.