-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy patharchitectures.theory.txt
164 lines (152 loc) · 11.4 KB
/
architectures.theory.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
┏━━━━━━━━━━━━━━━━━━━┓
┃ ARCHITECTURES ┃
┗━━━━━━━━━━━━━━━━━━━┛
RISC vs CISC ==> #RISC signifie que l'architecture a peu d'instructions,
#par opposition à CISC.
#RISC est souvent présenté comme plus rapide et
#évolué.
SIGNEDNESS ==> #Le signe par défaut des char dépend de l'architecture.
#Risque : comparaisons ; conversion.
#Prévention : forcer la signedness avec le compilateur ;
#écrire "[un]signed char" et non char.
ENDIANNESS ==> #Risque : lecture/utilisation octet par octet d'un
#groupe d'octets (unions, wchar_t, pointeurs) : qui lira
#en fait un octet sur deux avant l'autre.
#Prévention : forcer l'endianness (des systèmes bi-
#endian) avec gcc -mlittle-endian et gcc -mbig-endian
ALIGNEMENT ==> #Signifie que la mémoire ne peut être accédée que pour
#des adresses multiples de X words. Si ce n'est pas le
#cas, un padding a lieu pour remplir le vide.
#Risque : lecture/utilisation octet par octet d'un
#groupe d'octets (unions, wchar_t, pointeurs) qui
#ignorera qu'un adding a en fait eu lieu. Par exemple,
#une struct de SHORT_VAL placera peut-être un octet de
#padding entre chaque SHORT_VAL à la compilation sur une
#architecture donnée.
#Autre risque : typecasting d'un pointeur vers un autre
#pointeur.
#L'accès à une data non alignée produit un segfault.
#Détection : gcc -Wpadded
TAILLE DU WORD ==> #16, 32 ou 64 bits. Modifie la taille des types
#fondamentaux, l'alignement, etc.
ABI ==> #L'ABI d'une architecture désigne pour une
#architecture donnée, voire pour un OS sur une
#architecture donnée la signedness, l'endianness,
#l'alignement, la word size, mais aussi :
# - name mangling : nommage des symboles utilisés par
# le linker. Ceux-ci diffère entre un compilateur C
# et C++ : c'est la raison d'être de #ifdef
# _cplusplus
# - la propagation des exceptions
# - format des binaires et des librairies
# - manière avec laquelle les arguments sont passés à
# une fonction et la valeur retournée
# - table des syscalls
+---------+-----+----------+----+------------------------------+----+----------+
| NOM |LIBRE|PRODUCTEUR|ARCH| IMPLEMENTATIONS |BITS| NOTES |
+---------+-----+----------+----+------------------------------+----+----------+
|x86/IA-32| | Intel |CISC| Fait référence au 80386, | 32 |Lit-endian|
| /i386 | | | | suivi du 80486, Pentium, | |Succède au|
| | | | | Intel Core, puis Celeron chez| | 80286 |
| | | | | Intel, et d'autres chez | | |
| | | | | d'autres vendeurs (dont AMD) | | |
+---------+-----+----------+----+------------------------------+----+----------+
| x86_64/ | | AMD |CISC| Fait référence au Pentium 4 | 64 |Lit-endian|
|AMD64/x64| | | | et Intel Core 2 chez Intel | | |
| | | | | et à d'autres architectures | | |
| | | | | chez d'autres vendeurs (dont | | |
| | | | | AMD). | | |
| | | | | Omniprésent avec x86 sur les | | |
| | | | | PC. | | |
+---------+-----+----------+----+------------------------------+----+----------+
| ARM | N | ARM |RISC| 95% des téléphones (IPhone, | 32 | Bi-endian|
| | | | | Blackberry, Windows Mobile, | | |
| | | | | Android, Symbian, Maemo, | | |
| | | | | Meego), GBA, Nintendo DS, | | |
| | | | | les lecteurs mp3, IPods, | | |
| | | | | Ipad, Palm, disques durs, | | |
| | | | | routeurs, calculatrices. | | |
| | | | | Supporté par beaucoup de | | |
| | | | | distros Linux | | |
+---------+-----+----------+----+------------------------------+----+----------+
| PowerPC | O | IBM |RISC| Mac OS X (abandon progressif)| 32 |Big-endian|
| | | | | serveurs, GameCube, Wii, | 64 | |
| | | | | XBOX 360, PS3, imprimantes, | | |
| | | | | voitures | | |
+---------+-----+----------+----+------------------------------+----+----------+
| IA_64 / | | INTEL |RISC| Utilisé sur les serveurs et | 64 | parallél.|
| Itanium | | HP | | supercalculateurs | | décidé |
| | | | | Serveurs HP (OS : HP-UX) | | compile- |
| | | | | | | time et |
| | | | | | | non run- |
| | | | | | | time |
| | | | | | | Echec |
| | | | | | | comercial|
| | | | | | | Bi-endian|
| | | | | | | Succède à|
| | | | | | | PA-RISC |
+---------+-----+----------+----+------------------------------+----+----------+
| PA-RISC | | HP |RISC| Supercalculateurs | 32 |Big-endian|
| | | | | | 64 | |
+---------+-----+----------+----+------------------------------+----+----------+
| MIPS | N | MIPS |RISC| PSX, PS2, Nintendo64, PSP | 32 | Bi-endian|
| | | | | | 64 | |
+---------+-----+----------+----+------------------------------+----+----------+
| SPARC | O | Sun |RISC| Serveurs | 32 | Bi-endian|
| | | | | | 64 | |
+---------+-----+----------+----+------------------------------+----+----------+
| Alpha | N | DEC |RISC| Serveurs et supercalculateurs| 64 | Bi-endian|
| | | | | | |Succède à |
| | | | | | | VAX |
| | | | | | |Disparait |
+---------+-----+----------+----+------------------------------+----+----------+
| SuperH/ | | Hitachi |RISC| Saturn, Dreamcast, | 32 | Bi-endian|
| SH | | | | electronics devices. | | |
+---------+-----+----------+----+------------------------------+----+----------+
| Zseries | | IBM |CISC| Mainframes | |Big-endian|
| | | | | | |Succède à |
| | | | | | | ESA/390 |
+---------+-----+----------+----+------------------------------+----+----------+
Disparus :
+---------+-----+----------+----+------------------------------+----+----------+
| 80286 | | Intel |CISC| | 16 |Lit-endian|
| | | | | | | |
+---------+-----+----------+----+------------------------------+----+----------+
| VAX | | DEC |CISC| | 32 |Lit-endian|
| | | | | | |Succède à |
| | | | | | | PDP-11 |
+---------+-----+----------+----+------------------------------+----+----------+
| PDP-11 | | DEC |CISC| | 16 |Lit-endian|
+---------+-----+----------+----+------------------------------+----+----------+
| 68k | | Motorola |CISC| MegaDrive, Atari, Commodore | 16 |Big-endian|
| | | | | Amiga | 32 |Concurrent|
| | | | | | | de x86 |
+---------+-----+----------+----+------------------------------+----+----------+
| 6800 | | Motorola |CISC| | 8 |Big-endian|
+---------+-----+----------+----+------------------------------+----+----------+
| ESA/390 | | IBM |CISC| | 32 |Big-endian|
+---------+-----+----------+----+------------------------------+----+----------+
Autres :
+---------+-----+----------+----+------------------------------+----+----------+
| AVR | | | | | | |
| Blackfin| | | | | | |
| CRX | | | | | | |
|Alpha/VMS| | | | | | |
| FR30 | | | | | | |
| FRV | | | | | | |
| H8/300 | | | | | | |
| HPPA | | | | | | |
| M32C | | | | | | |
| M32R | | | | | | |
| MCore | | | | | | |
| MMIX | | | | | | |
| MN10300 | | | | | | |
|picoChip | | | | | | |
| RS/6000 | | | | | | |
| Score | | | | | | |
| SPU | | | | | | |
| V850 | | | | | | |
| VxWorks | | | | | | |
|Xstormy16| | | | | | |
| Xtensa | | | | | | |
+---------+-----+----------+----+------------------------------+----+----------+