Files
Yggdrasil/docs/arm/ASM.md
T
2023-11-20 21:38:23 +01:00

2.8 KiB
Raw Blame History

Intro

Mode de fonctionnement

A l'initialisation du processeur, le mode "system" est activé

Processor mode Notation Description
User _usr The normal program execution mode
FIQ _fiq Designed to support a high-speed transfer or channel process
IRQ _irq Used for general–purpose interrupt handling
Supervisor _svc A protected mode for the operating system
Abort _abt Used to implement virtual memory and/or memory coprocessor
Undefined _und Used to support software emulation of hardware coprocessor
System _sys Used to run privileged operating system tasks

Les registres du processeur ARM

!Pièces jointes/Pasted image 20230928150906.png

Rôle des registres

  • Les registres r0 à r12sont libre pour un usage général
  • Le registre r13appelé SP(Stack Pointer) sert comme pointeur de pile propre à chaque mode
  • Le registre r14 appelé LR(Link Register) mémorise l'adresse de retour lors d'un appel de fonction
  • Le registre r15appelé PC(Program Counter) pointe sur la prochaine instruction à exécuter
  • CPSR(Current Program Status Register) est le registre d'états courant du processeur
  • SPSR (Saved Program Status Register) est le registre de sauvegarde de l'ancien registre d'états

Registres CPSRet SPSR

Les registres CPSRet SPSRregroupent:

  • Les fanions concernant la plus récente opération réalisée par l'ALU
  • Les bits d'acceptation ou de refus d'interruptions électriques
  • Le mode du processeur codé sur 5 bits
  • Le bit d'activation du jeu d'instructions Thumb !Pièces jointes/Pasted image 20231120100133.png

Les fanions

A chaque opération mathématique ou logique, l'ALU peut positionner des fanions

  • N Negative - Nombre négatif. C'est le bit de signe du nombre en complément à 2
  • Z Zero - Nombre = 0. Utilisé généralement avec des compteurs pour effectuer des boucles
  • C Carry - Retenue ou dépassement de capacité lors d'opérations sur des nombres logiques
  • V oVerflow - Dépassement de capacité lors d'opérations arithmétiques en complément à 2

Warning

Toute les instructions n'affectent pas tous les fanions

Exécution conditionnelle

Chaque instruction du processeur ARM peut-être exécutée sous condition

  • Pour rendre une instruction conditionnelle, il suffit d'ajouter deux lettres à sa mnémonique
  • L'opcode de chaque instruction comprend un champ "condition" !Pièces jointes/Pasted image 20231120103537.png
CMP     r0, r1      ; Update flags based on r0 - r1
ADDGT   r0, r0, #4  ; If r0 greater than r1 THEN r0 = r0 + 4
					; ELSE ADDGT is skipped
ADDLT   r1, r1, #4  ; IF r0 less than r1 THEN r1 = r1 + 4
					; ELSE ADDLT is skipped

!Pièces jointes/Pasted image 20230928151308.png

Instructions de branchement