PDA

View Full Version : [Assembly] Indirizzamento indicizzato con registro indice


guylmaster
09-11-2009, 14:19
Stavo studiando il metodo di indirizzamento indicizzato con registro indice, e faceva il seguente esempio in assembly:

ADD 1050(R1), R2

L'indirizzamento indicizzato con registro indice non dovrebbe essere un indirizzamento a spaziamento (o offset) in cui lo spaziamento è salvato in un registro mentre la base è scritta direttamente nell'istruzione?

Dunque nell'istruzione di sopra:

ADD è il codice operativo;

1050 sarà la base;

R2, sarà l'offset?

E r1 tra parentesi tonde cosa dovrebbe essere? ovvero 1050(R1) ? un registro segnato cosi tra parentesi tonde dovrebbe significare che si parla di un indirizzo no? e quindi quella dicitura che significa?

Inoltre si parlava di indirizzamento mediante modo e registro, in cui compaiono due pezzi:

Uno il codice operativo ed accanto il modo.

Dice che il codice operativo è formato a sua volta dei flag D e W ed il campo mode è formato dai regitri MOD, REG e R/M

Sinceramente non ho capito bene cosa significassero i vari registri.

Se avete qualche guida o simili da linkare, o avete voglia di scrivermi voi una breve spiegazione ve ne sarei grato.

gugoXX
09-11-2009, 23:45
Se al posto delle parentesi tonde ci fossero delle quadre allora direi che si sta parlando di Assembly per x86 e non avrei dubbi.
Non e' quindi ben delineata la domanda (ogni assembly e' diverso), ma mi sentirei di dire che l'operazione equivale a
Prendi il contenuto del registro R1, sommaci 1050, considera il risultato come indirizzo di memoria.
Vai a scrivere il contenuto del registro R2 in quell'indirizzo di memoria.

guylmaster
10-11-2009, 16:41
Se al posto delle parentesi tonde ci fossero delle quadre allora direi che si sta parlando di Assembly per x86 e non avrei dubbi.
Non e' quindi ben delineata la domanda (ogni assembly e' diverso), ma mi sentirei di dire che l'operazione equivale a
Prendi il contenuto del registro R1, sommaci 1050, considera il risultato come indirizzo di memoria.
Vai a scrivere il contenuto del registro R2 in quell'indirizzo di memoria.

Si poi rileggendo si parla di assembly in "generale" e difatti quello sarebbe base + offset.

Mentre per quell'altro metodo di indirizzamento che veniva chiamato "mediante modo e registro"? se ne sa nulla? :D

perchè grossomodo l'ho capito, però vorrei capire di preciso ogni piccola parte che lo compone che cavolo fa (visto che sembra composto da vari fleg e registri)