PDA

View Full Version : [Assembly] cosa fa questa mov?


Alhazred
01-06-2009, 18:44
Frammento di codice

ind EQU 200h
xorl R0,R0 ;R0 è un registro
xorl R1,R1 ;R1 è un registro
movl ind(R0), R1

Cosa fa la mov con un primo operando di questo tipo?

~FullSyst3m~
01-06-2009, 19:08
Frammento di codice

ind EQU 200h
xorl R0,R0 ;R0 è un registro
xorl R1,R1 ;R1 è un registro
movl ind(R0), R1

Cosa fa la mov con un primo operando di questo tipo?

Non sono sicuro, ma dovrebbe copiare il registro R1 nell'indirizzo del registro R0.

Alhazred
01-06-2009, 19:14
Credo che non sia così, altrimenti ind potrebbe non esserci, sarebbe solamente
movl (R0), R1

~FullSyst3m~
01-06-2009, 20:38
Credo che non sia così, altrimenti ind potrebbe non esserci, sarebbe solamente
movl (R0), R1

ind potrebbe anche essere una label. In ogni caso, come ho detto, non sono sicuro. E' da qualche giorno che studio assembler a livello non molto approfondito, il minimo che mi serve per applicarlo alla sicurezza. Non ho mai visto una cosa del genere, quindi cerco di andare ad intuito.

Alhazred
01-06-2009, 20:40
ind è una costante, vale 200h, l'istruzione è come se fosse

movl 200h(R0),R1

eliano
01-06-2009, 22:42
Sembrerebbe un indirizzamento di tipo displacement, D(Rx), dove:
D è l'offset e Rx è il registro che punta ad una zona di memoria.
In sostanza l'offset viene sommato al contenuto del registro ed utilizzato per indirizzare 32 bit di memoria.
Dettagli in questa (http://www.stanford.edu/class/cs107/other/IA32_Cheat_Sheet.pdf) pagina

~FullSyst3m~
01-06-2009, 23:37
Sembrerebbe un indirizzamento di tipo displacement, D(Rx), dove:
D è l'offset e Rx è il registro che punta ad una zona di memoria.
In sostanza l'offset viene sommato al contenuto del registro ed utilizzato per indirizzare 32 bit di memoria.
Dettagli in questa (http://www.stanford.edu/class/cs107/other/IA32_Cheat_Sheet.pdf) pagina

Il displacement però può essere anche a 8 o 16 bit, non solo 32.

Alhazred
02-06-2009, 23:03
Grazie eliano, penso sia esattamente come dici tu.