1

Quelqu'un pourrait t il me résumer en quelques phrases le fonctionnement d'un ARM, sachant que je connais déja bien le 68k?

genre

Y'a combien de registres? lequel est le pointeur de pile?

C'est quoi le mode THUMB? y'a différents modes d'adressages, lequel est le plus puissant, plus utilisé, c'est quoi les différences?

c'est juste pour ma culture, au moins pour le moment smile

merchi smile

2

Il y a 15 registres. Les 12 premiers bon bah c'est des registres, quoi grin
Le registre r13 est un registre qui sert à pointer sur la pile.
Le registre r14 sert à stocker UNE adresse d'un sous-programme appelé.
Le registre r15 est un registre Program Counter, en gros c'est le compteur des adresses pour chaque instruction. Cependant, sa valeur est égale à l'adresse de la 2ème instruction suivante.

Pour empiler, il y a deux méthodes : full ascending et full descending. Le moins chiatique étant le dernier.

Les adresses sont codées sur 32 bits.

(Raaaah, tu vas me faire farfouiller dans mes cours...)

3

Edited_850

4

pas sûr que le mode thumb aille plus vite qd il est dans le cache (sinon je vois pas trop l'intérêt du mode non-thumb), je pense que c'est plutôt pour éviter que le code déborde du cache non ?

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

5

Edited_851

6

Orion_ (./3) :
il me semble qu'il y a 16 reg, le 15 est pour la pile,

Agabouh ? On parle bien de l'ARM7 là confus
Orion_ (./3) :
(genre tu rajoute un z a la fin d'un add, addz et ça s'execute que si le resultat precedent etait = a zero trilove.gif (bon me rappel plus la syntaxe exact mais en gros c'etait a peu pres ça))

Les instructions conditionnelles sont à utiliser après un CMP. (En général, ça peut aussi se trouver après un ANDS, ORR ou autre turluterie)

CMP r0,#0       @Comparons r0 à 0
BEQ machin     @Si r0==0, alors on va à l'étiquette machin.


Tiens d'ailleurs, voici la liste des instructions conditionnelles pour les nombres signés :

EQ == égal
GT == Greater than
GE == Greater or Equal
LT == Lower than
LE == Lower or Equal
NE == pas égal
Orion_ (./3) :
mov r1, r2, lsr #8

Ouais alors LSL et LSR #n sont respectivement un décalage de la valeur de n bits respectivement à gauche (le nombre * 2^n) et à droite (le nombre / (2^n))

Quant aux MOV de nombres trop gros, ça peut se contourner par un MVN qui est un MOV qui stocke le nombre en complément à 1 wink

7

Edited_852

8

9

pour empiler : STMFD r13!, {lesregistresquivontbien}
pour dépiler : LDMFD r13!,{pareil}

?

10

Je suis pas un expert ARM, mais

-> THUMB = instruction plus petite, donc code généré moins gros donc besoin de moins de ROM, c'est une des principales raisons
-> Pas d'instruction genre mov #$F8421234,r0 j'ai un doute mais c'est possible, mais j'aurais plutot dit pas de mov #$F8421234, $1234, ou d'autre genre add $1234,r0, car le principe du RISC c'est de ne pas avoir d'instruction qui font tout, une instruction pour charger dans un registre, une autre pour faire l'addition et une autre pour mettre le registre en mémoire, c'est le principe du RISC. Sinon
l'arm etant un RISC, les instructions font toute 32bits,
Le risc est 32bit ok, mais c'est pas pasqu'il est RISC hein ^^


En tout cas c'est fou quand on sais d'ou viens l'ARM de savoir comment il a "fini" cheeky
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

11

merci. hehe

Vous battez pas pour le pointeur de pile, ca dépend de l "ABI" et je pense qu'on peut prendre celui qu'on veut du moment qu'on s'y tient smile


Godzil (./10) :
l'arm etant un RISC, les instructions font toute 32bits,
Le risc est 32bit ok, mais c'est pas pasqu'il est RISC hein ^^


Il aurait du dire: l'ARM étant un RISC 32 bits, toutes les instructions font exactement 32 bits

et y'a pas de champ supplémentaire comme pour le 68k.

et donc bref, le mode thumb est pas trop intéressant en programmation de "tous les jours" je suppose.

Ca me fait penser au microblaze (fpga xilinx) ce cpu...

Mais le microblaze, lui il peut faire des littéraux 32 bits en 2 instructions:
imm 0x0102
addi r1, r2, 0x0304

et les deux moitiés de 16 bits sont combinées pour faire r2+0x01020304->r1
et r0 reste toujours à 0 sur µb.

Quelles sont les différences entre un ARM7 et un ARM9?

12

Pour autant que je me souvienne, on a le choix de faire des instructions qui affectent ou non les flags (mais je ne me rappelle plus comment)

13

Le thumb est tres utilisé en fait dans l'embarqué quand tu as des contraites, genre la GBA qui a un bus en deux morceau, l'un 16bit et l'autre 32bits. Tout ce qui utilise le bus 16 est ecrit en thumb, le reste en "ARM7" (par exemple)

En tout cas c'est vraimetn un drole de proco: ARM2 = +/- 30000 transistor contre plus de 70000 pour le 68k de l'époque alors qu'il sont largement comparable au niveau perf, et ARM6 = +/- 35000 transistor, pourtant il y a une sacré évolution entre les deux ^^

L'article de wikipedia au sujet des ARM est plutot bien foutut ^^ et pour ceux qui sont curieux, je vous conseille de regarder RISC OS l'OS des ARMs ^^
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

14

squalyl (./11) :
Ca me fait penser au microblaze (fpga xilinx) ce cpu...

Mais le microblaze, lui il peut faire des littéraux 32 bits en 2 instructions:
imm 0x0102
addi r1, r2, 0x0304

et les deux moitiés de 16 bits sont combinées pour faire r2+0x01020304->r1
et r0 reste toujours à 0 sur µb.

Oui, c'est du MIPS ^^ (comme sur PSP je crois)
Et ce genre de chose se fait aussi en PPC...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

15

Faut oser prendre des risques a utiliser l'architecture RISC

dehors
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

16

Godzil (./13) :
Le thumb est tres utilisé en fait dans l'embarqué quand tu as des contraites, genre la GBA qui a un bus en deux morceau, l'un 16bit et l'autre 32bits. Tout ce qui utilise le bus 16 est ecrit en thumb, le reste en "ARM7" (par exemple)

En tout cas c'est vraimetn un drole de proco: ARM2 = +/- 30000 transistor contre plus de 70000 pour le 68k de l'époque alors qu'il sont largement comparable au niveau perf, et ARM6 = +/- 35000 transistor, pourtant il y a une sacré évolution entre les deux ^^

L'article de wikipedia au sujet des ARM est plutot bien foutut ^^ et pour ceux qui sont curieux, je vous conseille de regarder RISC OS l'OS des ARMs ^^

Le 68K est un CISC (tant pis) très orthogonal (tant mieux) en microcode (tant pis). Forcément ça aide pas...

Kochise
avatar
Si Dieu m'a de nouveau fait homme, cette fois il m'a pas raté : marcher sur l'eau et dupliquer les pains, ça marche p'us :/

17

Oui et alors ? le 68000 etait, est, et restera un tres bon proco pour son epoque, ce qui n'empeche qu'il a bcp de transistor par rapport a d'autre CPU de la meme epoque qui sont pas si mal en fait, et qui (contrairement au 68k) continu a évoluer
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

18

J'ai pas dit le contraire fiston, suffit de lire la bio du 68K : http://en.wikipedia.org/wiki/Motorola_68000
On se rend compte qu'a la base c'est un peu la même origine (6800 -> 6809 vs 6502 -> 68000 vs ARM) : http://en.wikipedia.org/wiki/ARM_architecture

Kochise
avatar
Si Dieu m'a de nouveau fait homme, cette fois il m'a pas raté : marcher sur l'eau et dupliquer les pains, ça marche p'us :/

19

20

clair grin

de toute façon je vois pas comment on peut comparer un risc et un cisc grin

brayf

l'arm j'en apprends plus avec les cours d'archi de ma copine hehe

j'aime bien le coup des instructions conditionnelles à volonté et les décalages pendant move oui

adds r0, r3, r4
movgt r0, r1 lsl r2 top

par contre, 32 bits/instruction... c'est gros... je comprends le pourquoi du thumb.

21

Boaf ça va, c'est pas encore au niveau VLIW...

Kochise
avatar
Si Dieu m'a de nouveau fait homme, cette fois il m'a pas raté : marcher sur l'eau et dupliquer les pains, ça marche p'us :/

22

squalyl (./20) :
par contre, 32 bits/instruction... c'est gros... je comprends le pourquoi du thumb.

Oui c'est gros, mais la ou un 68000 prend 2x moins par instruction ton arm en fait "4x plus" (c'est un peu exagéré mais bon ^^) et si j'ai bonne mémoire l'ARM est plus efficace avec un nombre de cycle par instructions tres faible, quelque soit la complexité de l'instruction
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

23

oui, risc, quoi ^^

j'imagine que c'est méga rapide et tout, avec des décalages pendant le move, des gestions de pile avec pré-post inc-décrémentation, etc...
mais en place mémoire, c'est pas économe sorry on sent bien que c'est un cpu "moderne" pour des temps où la mémoire coute pas cher smile

c'est pas un reproche, juste une remarque!

24

moderne ? heu en 1980 la mémoire etait exessivement cher... (ça date d'un peu avant, mais si atari a mis si peu de mémoire dans sa 2600 c'etait a cause du prix de la mémoire!)

Franchement je pense que utilisé a fond, on perd pas tant que ça en mémoire. D'ailleurs bcp pensent que le thumb est plus une usine a gaz qu'autre chose. L'avantage du thumb c'est de pouvoir utiliser un bus 16, la ou c'est pas possible en ARM
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

25

oué bon, en avance sur son temps quoi grin

je pense que je le connais pas encore assez bien oui