Wie speichere ich den Wert eines Registers in einen Speicherbereich, auf den ein Zeiger zeigt?

8

Ich habe den folgenden Code:

%Vor%

Wenn ich jedoch im Code den Speicherzeiger dereferenziere (wie in *(int *)storage ), bekomme ich nicht 1. Also, was ist der richtige Weg, den Wert eines Registers in den Speicher zu speichern, auf den a zeigt C ++ Zeiger?

    
Emil D 02.03.2010, 14:23
quelle

1 Antwort

5

Sind Sie sicher, dass Sie wissen, was Sie wirklich brauchen? Sie haben den Code angefordert, der den Registerwert in dem von malloc zugewiesenen Speicher ("auf den ein Zeiger zeigt") speichern würde, dh *(int*) storage location, aber Sie haben die Antwort akzeptiert, die den Speicher speichert (oder zumindest speichert) Wert in den Zeiger selbst, was eine ganz andere Sache ist.

Um eax in den Speicher zu speichern, auf den ein Zeiger zeigt, d. h. in *(int*) storage , wie Sie es angefordert haben, müssten Sie so etwas tun

%Vor%

(Ich verwende die "Intel" rechts-nach-links-Syntax für Assembly-Anweisungen, dh mov kopiert vom rechten Operanden in den linken Operanden. Ich weiß nicht, welche Syntax - rechts-nach-links oder links - rechts - Ihr Compiler verwendet.)

Beachten Sie auch, dass in mov edi, dword ptr storage der dword ptr -Teil vollständig optional ist und keinen Unterschied macht.

    
AnT 02.03.2010, 18:12
quelle

Tags und Links