gas: troppi di riferimento della memoria
Domanda
Quando si compila la seguente istruzione:
movl 4(%ebp), 8(%ebp)
ho ottenuto:. troppi riferimento memoria
Cosa c'è che non va?
Soluzione
Il numero prima della parentesi è un offset di byte (che causa che si verifichi un riferimento di memoria), e non è possibile avere due di loro con movl
. È necessario spostare il valore temporaneo ad un registro prima.
movl 4(%ebp), %ecx
movl %ecx, 8(%ebp)
Altri suggerimenti
Non è un'istruzione legale. Per la maggior parte delle istruzioni che fanno riferimento a memoria è necessario spostare a / da un registro.
movl
non lo fa a memoria di memoria si muove, si deve andare per mezzo di un registro (quindi con due istruzioni movl
).
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow