PDA

View Full Version : [C] Debuggando... i virtual address


Teo@Unix
28-02-2010, 21:08
Buonasera a tutti.

Voglio chiarirmi una volta per tutte un dubbio che ho sugli indirizzi virtuali che debuggando i programmi tra windows e linux mi è sorto.

Spiego meglio;
partendo dal codice seguente valido per un piccolo test, (si parla di s.o. 32 bit)
#include <stdio.h>
typedef unsigned int u32;

u32 e;
u32 f;

void main(void)
{
u32 a;
u32 b;
u32 c;

u32 buffer[16];

printf("\n");
printf("\taddress of a: 0x%X\n",&a);
printf("\taddress of b: 0x%X\n",&b);
printf("\taddress of c: 0x%X\n",&c);

printf("\n");
printf("\taddress of buffer: 0x%X\n",buffer);
}

bene, non so se avete occasione di provare il codice sia su windows che su Linux, ciò che è evidente è che il formato dei VA stampati su windows è del tipo:
0x22FF3C
-> quindi sono 24 bits
su Linux:
0xBFFFF3A0
- > e questi sono 32 bits (un completo VA?)

Windows mi riporta solo l'offset? che poi è di 24 bit?

Che mi dite? Grazie.

marco.r
28-02-2010, 21:29
piu' semplicemente l'indirizzo sotto windows ha il primo byte a zero per cui la printf non te lo stampa.

Teo@Unix
28-02-2010, 21:33
ok, infatti!
quindi sono VA completi.

il fatto che sono molto più bassi quindi... è solo la rilocazione differente tra windows e linux. ok?