|
|
|
![]() |
|
Strumenti |
![]() |
#1 | |
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6183
|
[C]n Cache alignement
Ciao a tutti,
sto riguardando il cache alignment su un libro, in cui ad un certo punto fa un esempio con del codice: Quote:
|
|
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Quote:
quindi nella penultima linea salvi in result il primo indirizzo in base allineato a 16 (e.g. 32). quindi con l'ultima riga salvi nei quattro byte precedenti a result il puntatore all'indirizzo originale, presumibilmente per poterne fare la free successivamente. Questo almeno in teoria, in quella penultima linea ci sono diverse cose che non tornano (e sicuramente non compila), tra cui il fatto che quel (char)* probabilmente e' un (char*), e quell' & in mezzo non e' chiaro a cosa serva. Senza contare che se quell'UIntPtr e' un puntatore a unsigned int, allora sfori l'array che e' un piacere ![]() Francamente userei qualcosa di piu' semplice rispetto a quella linea, tipo Codice:
char* result = base + m - (base%m); il puntatore nell'ultima riga. Detto questo, se sei in ambiente unix prova a dare una occhiata a posix_memalign.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
![]() |
![]() |
![]() |
#3 | ||||
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6183
|
Quote:
![]() Questo invece l'ho trascritto correttamente, non capisco proprio cosa cosa faccia quella istruzione a livello di sintassi C, al di là dell'allineamento ![]() Quote:
![]() Quote:
Quote:
Thanks!! |
||||
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
L' & -m serve ad azzerare i bit meno significati (i primi 4, visto che m è pari a 16) del puntatore, così da farlo diventare allineato a 128 bit.
Non è un'istruzione strana. E' molto comune e usata per questa particolare operazione (classico "and masking"; alcuni microprocessori hanno addirittura istruzioni dedicate). ![]()
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Quote:
![]() Allora ora e' tutto chiaro, direi che funziona come inteso.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
L'offuscamento del codice è una delle "feature" del C.
![]()
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:19.