[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[OT]: cicli in assembler



Un saluto a tutta la lista. 
Nel tentativo di ottimizzare un programmino al massimo grado mi sono
imbattuto nell' assembler 
Siccome l' ultima volta che l' ho utilizzato era per il commodore 64 
osservo alcune stranezze che non so spiegarmi. 
Il PC e' un AMD64 con una debian testing sopra.
Il seguente programmino  viene eseguito in 0.19 sec.
Il registro rax e' inizializzato a 1
.L2:
        movsd   a.1246+8(,%rax,8), %xmm0
        mulsd   %xmm0, %xmm0
        movsd   %xmm0, b.1245+8(,%rax,8)
        addq    $1, %rax
        cmpq    $9999999, %rax
        jne     .L2

se cambio la riga    "addq    $1, %rax"
con   la riga        "addq    $2, %rax"
Dovrei eseguire il ciclo solo la meta' delle volte rispetto al caso
precedente. Il tempo di esecuzione tuttavia rimane invariato (0.19
sec). 
Se pero' tolgo le istruzioni movsd e mulsd cambiando        
"addq    $1, %rax"
con 
"addq    $2, %rax"
il tempo si dimezza. 
Inoltre se tolgo solo mulsd (ossia la moltiplicazione) il tempo rimane
di circa (0.19sec). 
Qualcuno sa indicarmi la causa oppure dove potrei reperire informazioni
al riguardo? Dalle ricerche fatte con google non sono riuscito a trovare
il numero di cicli di clock per ogni istruzione.
Ciao e grazie


-- 
Stefano Simonucci

GNU/Linux User: #81790  http://counter.li.org



Reply to: