|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Aug 2006
Messaggi: 15
|
[C]Mappare in memoria una funzione
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. |
|
|
|
|
|
#2 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
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.
|
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Aug 2006
Messaggi: 15
|
Grazie Mille!!!!
Proprio quello che mi serviva!! Volevo chiedere è possibile impostare il base address anche nelle opzioni del linker di lcc? |
|
|
|
|
|
#4 |
|
Junior Member
Iscritto dal: Aug 2006
Messaggi: 15
|
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 |
|
|
|
|
|
#5 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
per quanto riguarda il MinGW, una cosa del genere dovrebbe funzionare:
Codice:
gcc pippo.c -Wl,--image-base=0x01400000 |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:50.



















