Formats d'instructions et modes d'adressage ARM7 : Clarification
Jeu d'instructions ARM7TDMI : Formats vs Modes d'adressage
La liste fournie (Traitement données, Multiplication, etc.) décrit des catégories/formats d'instructions, pas des modes d'adressage. L'ARM7TDMI (ARMv4T) prend en charge plusieurs modes d'adressage au sein de ces formats.
Modes d'adressage ARM7 (pour Load/Store & Traitement données)
1. Modes d'adressage Load/Store (LDR/STR)
| Mode | Exemple syntaxe | Description |
|---|---|---|
| Offset immédiat | LDR R0, [R1, #4] | Registre base + immédiat non-signé 12 bits (0–4095) |
| Offset registre | LDR R0, [R1, R2] | Base + registre (décalage optionnel : LSL/LSR/ASR/ROR #n) |
| Offset registre échelonné | LDR R0, [R1, R2, LSL #2] | Base + (registre × 1/2/4/8) |
| Pré-indexé (Writeback) | LDR R0, [R1, #4]! | MAJ base : R1 ← R1 + offset, puis chargement |
| Post-indexé | LDR R0, [R1], #4 | Chargement depuis base, puis MAJ base : R1 ← R1 + offset |
| Relatif PC (Literal Pool) | LDR R0, =0x12345678 | Assembleur place constante dans literal pool ; chargement relatif PC |
2. Adressage Operand2 Traitement données (Décalages)
Utilisé dans ADD, SUB, AND, ORR, EOR, MOV, CMP, ...
| Type décalage | Syntaxe | Exemple |
|---|---|---|
| Immédiat (8 bits roté) | #imm | MOV R0, #0xFF |
| Registre (sans décalage) | Rm | ADD R0, R1, R2 |
| Décalage logique gauche | Rm, LSL #n / Rs | ADD R0, R1, R2, LSL #2 |
| Décalage logique droite | Rm, LSR #n / Rs | MOV R0, R1, LSR R2 |
| Décalage arithmétique droite | Rm, ASR #n / Rs | CMP R0, R1, ASR #3 |
| Rotation droite | Rm, ROR #n / Rs | ORR R0, R1, R2, ROR #4 |
| Rotation droite étendue | Rm, RRX | MOV R0, R1, RRX (rotation 1 bit via Retenue) |
Catégories formats d'instructions (Ce que vous avez listé)
Vos 6 catégories sont correctes pour les groupes de formats d'instructions :
- Traitement données (opérations ALU : ADD, SUB, AND, EOR, MOV, CMP...)
- Multiplication (MUL, MLA, UMULL, SMULL, UMLAL, SMLAL)
- Échange (Swap) (SWP, SWPB) — accès mémoire atomique
- Load/Store (LDR, STR, LDM, STM, LDRH, STRH, LDRSB, LDRSH)
- Branchement (B, BL, BX, BLX)
- Coprocesseur / Système (CDP, LDC, STC, MCR, MRC, MSR, MRS, SWI/SVC)
Note : « S.M.L.A » fait probablement référence à Signed Multiply Long Accumulate (SMLAL) ou extensions DSP similaires (ARMv5TE). L'ARM7TDMI n'a pas de SMLA ; c'est ARM9E/ARM10E/ARM11.
État Thumb (16 bits) Adressage
- Sous-ensemble : Offset immédiat (5 bits), Offset registre (sans décalage), Relatif SP, Relatif PC.
- Pas de pré/post-indexé writeback en Thumb (sauf LDM/STM).
