[C] extern // static
|
01-04-2016, 14h14
Message : #6
|
|
b0fh
Membre actif Messages : 210 Sujets : 17 Points: 309 Inscription : Jul 2012 |
RE: [C] extern // static
C'est en effet bien mieux d'avoir des addresses courtes; en effet, pendant un accès mémoire, le contrôleur du bus mémoire doit vérifier le ticket de la requête mémoire, et il mettra forcément moins de temps à lire une addresse courte.
Le mieux étant d'utiliser des addresses d'un byte, qui seront les plus rapides à lire. Malheureusement, le compilo ne permet pas de s'en servir par défaut, a cause du DMA qui n'est pas activé par défaut, donc pour obtenir une variable super-rapide il faut caster un pointeur à la main, par exemple: int *case_1 = (int *)(1); int *case_2 = (int *)(2); et ensuite s'en servir comme des pointeurs normaux: *case1 = *case2 Note que dans de très rares cas (par exemple si le noyau a été infecté par la backdoor Dual_EC_DRBD de la NSA) ce type de code peut provoquer des segfaults, justement parce que la backdoor réserve ces accès mémoire ultrarapides à son propre usage. |
|
« Sujet précédent | Sujet suivant »
|
Messages dans ce sujet |
[C] extern // static - par ark - 14-02-2015, 07h44
RE: [C] extern // static - par airday - 01-04-2016, 10h54
RE: [C] extern // static - par ark - 01-04-2016, 11h04
RE: [C] extern // static - par airday - 01-04-2016, 11h16
RE: [C] extern // static - par supersnail - 01-04-2016, 11h20
RE: [C] extern // static - par b0fh - 01-04-2016, 14h14
|
Utilisateur(s) parcourant ce sujet : 3 visiteur(s)