Gdb: Speicherbezeichnung unklar

Gast #4351883
Lesenswert?
• ▲
▼
1
(gdb) x/16xw passwort
2
0xbffff7b0: 0x63674fa6 0x63674fa6 0x63674fa6 0x63674fa6
3
0xbffff7c0: 0x63674fa6 0x63674fa6 0x63674fa6 0x63674fa6
4
....
Warum werden, wenn
0xbffff7c0-0xbfffg7b0=16 ergibt, 32 Hexadezimalzahlen angezeigt. Es 
müssten doch 16bit d.h. 2byte angezeigt werden...
Persönliche Seite #4351998
Lesenswert?
• ▲
▼
Michael schrieb:
> Warum werden, wenn 0xbffff7c0-0xbfffg7b0=16 ergibt, 32 Hexadezimalzahlen
> angezeigt. Es müssten doch 16bit d.h. 2byte angezeigt werden...

Nein. Das sind 16 Byte, nicht 16 Bit. Speicheradressen beziehen sich auf 
Bytes, nicht auf Bits.

Und damit sind es --je nach gewählter Darstellung-- entweder 16 
8-Bit-werte oder 8 16-Bit-Werte oder 4 32-Bit-Werte pro Zeile.

Alles in Ordnung.
Moderator Persönliche Seite #4352079
Lesenswert?
• ▲
▼
Sven B. schrieb:
> Ich würde erwarten dass das 16*sizeof(passwort) Bytes ausgibt.

Nein, die Größe des entsprechend Objekts würde beim p[rint]-Kommando
berücksichtigt.  Das Memory-Dump-Kommando x interessiert sich nicht
dafür, hier wird das entsprechende Symbol („passwort“) nur benutzt,
um die Adresse zu ermitteln, ab der die Daten darzustellen sind.

Ansonsten: Modifier ‘w’ sind hier halt „richtige Wörter“, also 32
Bit.  Wer 16 Bit haben will, müsste im GDB den Modifier ‘h’ nehmen,
also „Halbwörter“:
1
x/hx passwort

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren