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


-- 
Per REVOCARE l'iscrizione alla lista, inviare un email a 
[EMAIL PROTECTED] con oggetto "unsubscribe". Per
problemi inviare un email in INGLESE a [EMAIL PROTECTED]

To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Rispondere a