PDA

View Full Version : Chiarimento sul linguaggio assembly


Bestseller
06-01-2011, 17:26
Buongiorno a tutti.
Ho un dubbio sul significato del seguente codice scritto in linguaggio assembly:
MOV R1,0(R2)
Il problema è che non capisco il significato dello zero prima della parentesi tonda. Se lo zero non ci fosse, il sistema copierebbe il valore presente nel registro 1 alla n-esima riga della RAM, dove il numero n è uguale al valore presente nel registro 2. Ma con lo zero cosa cambia?
Grazie.

Z80Fan
10-01-2011, 17:24
Buongiorno a tutti.
Ho un dubbio sul significato del seguente codice scritto in linguaggio assembly:
MOV R1,0(R2)
Il problema è che non capisco il significato dello zero prima della parentesi tonda. Se lo zero non ci fosse, il sistema copierebbe il valore presente nel registro 1 alla n-esima riga della RAM, dove il numero n è uguale al valore presente nel registro 2. Ma con lo zero cosa cambia?
Grazie.

Ciao.
Scusa ma di architettura si tratta? Non è MIPS perchè non esiste un'istruzione "mov", non è x86 perchè i registri non sono nominati attraverso Rx.

Cmq, prendendo una sintassi pseudo-mips, lo 0 semplicemente non serve a niente, semplicemente come scrivere MOV R1,(R2). Probabilmente qualche assemblatore un po' datato potrebbe dare problemi se non specifichi niente.

cdimauro
11-01-2011, 06:44
Gli x86-64 hanno i registri nominati come R0-R15. :D

Ma non è questa l'architettura, perché per indirizzare la memoria si usano le parentesi quadre e l'operatore + per "separare" i campi (quindi sarebbe MOV R1, [R2 + 0]).

Supdario
11-01-2011, 15:58
Gli x86-64 hanno i registri nominati come R0-R15. :D

Ma non è questa l'architettura, perché per indirizzare la memoria si usano le parentesi quadre e l'operatore + per "separare" i campi (quindi sarebbe MOV R1, [R2 + 0]).

I registri aggiuntivi dell'x86-x64 vanno da r8 a r15, e rimangono i classici registri x86, che sono semplicemente estesi (rax, rbx, rcx, rdx, rbp, rsp, rsi, rdi).

cdimauro
11-01-2011, 21:30
Hai ragione. Ero convintissimo che AMD avesse estenso la nomenclatura anche ai primi 8 registri, in modo da avere una loro etichettatura "simmetrica", ma ricordavo proprio male.

Grazie per la correzione.