Domanda

Quando si compila la seguente istruzione:

movl 4(%ebp), 8(%ebp)

ho ottenuto:. troppi riferimento memoria

Cosa c'è che non va?

È stato utile?

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
scroll top