PDA

View Full Version : problemino con assembler GAS


aeroxr1
21-06-2011, 21:19
Ho una domanda da fare su assembler il GAS per CALCOLATORE C86/32 .

con


matrix: .fill 16,4,0


creo un vettore . Ora per accedere a questo vettore o matrice 4x4 che si voglia dire il mio professore ci ha illustrato diversi tipi di indirizzamento . Io purtroppo non li ho molto capiti :(


matrix(%EBX, %ESI, 8)
matrix(, %ESI, 8)
matrix (%EAX)
matrix(%EBX, %ESI)


quali sono le differenze tra questi 3 tipi di indirizzamenti ?

pabloski
22-06-2011, 12:38
Molto semplice. Gas usa questa sintassi

Offset(%Base, %Indice, Moltiplicatore)

L'indirizzo finale è dato da Offset + Base + Moltiplicatore * Indice

Ovviamente EBX funge da base, ESI da indice e 8 è il moltiplicatore. Nella pratica se ho un vettore di elementi a 64 bit userò 8 come moltiplicatore perchè mi permette, variando l'indice, di scorrere tutto il vettore molto semplicemente incrementando indice di 1.

Usando tutti e 4 quegli elementi puoi scorrere facilmente una struct ed eventuali vettori contenuti al suo interno.

pabloski
22-06-2011, 12:44
p.s. non so quanto tempo hai da dedicare a quest'assembler, ma se ce la fai ti consiglio di leggerti il libro Programming Ground Up che tratta di programmazione sotto linux tramite assembler gas.

http://programminggroundup.blogspot.com/