PDA

View Full Version : [C]Mappare in memoria una funzione


bonj84
21-01-2008, 16:30
Salve a tutti..

Volevo chiedere se è posibile in C dire al compilatore di mappare una determinata funzione ad un inirizzo diverso. Mi spiego meglio. Nel mio programma è presente una funzione che stampa una stringa. Dopo aver compilato il tutto e fatto il disassemblato dell'eseguibile, vedo che la mia funzione viene chiamata all' indirizzo 004012D4.
Volevo chiedere quindi se si riesce a farla mappare ad esempio in 014012D4, in modo che la call venga eseguita appunto in 014012D4.

Spero di essermi spiegato.:)

Grazie mille anticipatamente per l'aiuto.

71104
21-01-2008, 22:05
se le 4 cifre esadecimali meno significative dell'indirizzo possono rimanere le stesse allora puoi semplicemente cambiare l'indirizzo di base del modulo eseguibile da 0x00400000 (che è il valore standard) a quello che ti pare (purché sia valido ovviamente), per esempio 0x01400000. tale opzione si imposta dalle proprietà del linker in Visual C++, se è quello che stai usando.

bonj84
22-01-2008, 01:26
Grazie Mille!!!!
Proprio quello che mi serviva!!

Volevo chiedere è possibile impostare il base address anche nelle opzioni del linker di lcc?

bonj84
22-01-2008, 20:17
Quali sono i parametri da passare al linker del compilatore lcc win32 per cambiare il base address?
Altrimenti anche quelli del gcc andrebbero bene..

grazie mille

71104
23-01-2008, 02:12
per quanto riguarda il MinGW, una cosa del genere dovrebbe funzionare:
gcc pippo.c -Wl,--image-base=0x01400000