2012-05-01 12 views
7

sto cercando di capire cosa le istruzioni di montaggio in realtà faCosa fa la seguente istruzione di assemblaggio aggiunged -8 (% rbp),% xmm0?

addsd -8(%rbp), %xmm0 

So che si tratta di un'aggiunta in virgola mobile su una macchina x86-64 con SSE2. Inoltre, so che% xmm0 è un registro. Tuttavia, ciò di cui non sono sicuro è cosa significhi -8 (% rbp). I manuali sono un po 'confusi su questo.

Fondamentalmente, la domanda è, fa -8 (% rbp) significa che sta prendendo un valore da un registro (forse gli ultimi 8 byte di rbp) o sta prendendo un valore dalla memoria (valore in virgola mobile a un offset di -8 dall'indirizzo contenuto in rbp).

+2

La tua seconda ipotesi è corretta. Sta accedendo al valore a '-8' byte di offset dall'indirizzo' rbp'. – Mysticial

+0

Hey Mysticial, puoi indicare un riferimento che lo spiega facilmente? – owagh

+0

Confusione nella sintassi AT & T di nuovo. – harold

risposta

7

La tua seconda ipotesi è corretta. Sta accedendo al valore a -8 byte sfalsati dall'indirizzo rbp.

Supponendo AT & sintassi T, questa istruzione carica un 8 byte double dall'indirizzo rbp - 8 e aggiunge al valore nella metà inferiore di xmm0.

+0

Puoi indicare un riferimento che lo spiega facilmente? La maggior parte delle esercitazioni e riferimenti di linguaggio assembly sono irrimediabilmente offuscati (o così mi sento, forse sono solo io) – owagh

+0

Sto provando a trovarne uno proprio adesso. Ma la questione relativa di indirizzamento potrebbe essere un po 'sul lato di base. – Mysticial

+3

Eccolo: http://en.wikibooks.org/wiki/X86_Assembly/GAS_Syntax – Mysticial

Problemi correlati