PDA

Visualizza la versione completa : [C++]Cambiare l'entry point


mr.vajaski
27-08-2002, 16:17
Come posso dire al compilatore ke l'entry point del programma deve essere una certa funzione pittosto della solita main??

Maldito
27-08-2002, 17:38
perchè si può fare?

con i compilatori che ho visto io nessuno dava questa opzione...

cmq una volta compilato.. che tu lo chiami main o lo chiami pippo.. quello è sempre uguale!

Level
27-08-2002, 22:08
Originariamente inviato da mr.vajaski
Come posso dire al compilatore ke l'entry point del programma deve essere una certa funzione pittosto della solita main??
Non penso sia proprio possibile, devi entrare nel main e da lì puoi subito chiamare la funzione che vuoi. Se fosse possibile scoprirei veramente una cosa nuova.

ciao.

mr.vajaski
30-08-2002, 00:27
Certo ke è possibile, l'ho visto in surgente di un Os.

n355un0
30-08-2002, 09:02
non dubito che in qualche maniera si possa fare, ma mi sembra più che altro un problema concettuale, come ha scritto infatti maldito qualche post fa.

Piero Salandin
30-08-2002, 13:30
Originariamente inviato da mr.vajaski
Come posso dire al compilatore ke l'entry point del programma deve essere una certa funzione pittosto della solita main??

La domanda nasce spontanea: Perché?

Ciauz

steno12
30-08-2002, 13:50
Certo che si fà:

La cosa è concettuale.......

l'entry point, come sapete, è il primo l'indirizzo della ram dove viene allocato il programma di partenza......
se lanci uu prg la cpu assegna lo stack di partenza alla cella indirizzo che prevede la cpu, diciamo 1002, se ora chiudi il programma e lo rilanci esso partirà ad un diverso indirizzo e così via.

Se vuoi far partire il programma, per esempio in aree riservate, per esempio un prg tsr che giri nella stessa zona di memoria di ZoneAllarm oppure altri programmi e condividere la stessa zona, devi, tramite codice, provvedere a disabilitare, come si fà per i video giochi, l'area non permessa ad accedere per esempio come la memoria video,... fatto questo dici al compilatore di indirizzare l'entry point in quella zona............... e il main ti porterà proprio lì

r0x
30-08-2002, 19:34
VC++ ha un'opzione per modificarlo, ma ovviamente il tutto dipende dal compilatore che usi. Io spesso lo modifico perché il VC++, di default, chiama nell'entry-point (che non è direttamente main() ) delle funzioni che poi portano parecchie dipendenze inutili. Così arrivo a fare programmi anche di meno di 4kb! :adhone:

Ciao.

akiross
31-08-2002, 13:37
Ammettendo che si possa fare:
perchè devi fare così?
non puoi partire dalla main e richiamare la funzione che sarà il tuo e.p.??
non vedo perchè complicarsi la vita.
Sta di fatto che anche il Borland C++ Builder lo può fare, ma come è già stato detto, dipende tutto dal compilatore.
Ma se vuoi rinunciare alla portabilità...

r0x, sai che in win32 cè un'opzione che toglie tutte le dipendenze inutili??
Io quando facevo i programmi in OpenGL, mi hanno detto di fare così:

#define WIN32_LEAN_AND_MEAN

Questo risparmia tutte le dipendenze inutili.
INUTILE dire, che i programmi diventavano di 4kb... MUUUAHAHAH

Oltre a questo puoi utilizzare i soliti parametri del compilatore... pragma e cose varie...

EVVIVA LINUX!!!!
Ciao

r0x
01-09-2002, 22:42
Sìsì lo uso sempre :D .. cmq la funzione incriminata che il VC++ chiama è qualcosa tipo _WinMainCRT (boh.. è da mesi che non lo uso..) e per alcune chiamate fa sì che la runtime C venga sempre linkata .. io per evitarla mi sono tipo riscritto alcune funzioncine standard C che uso spesso e mi evitavo la runtime statica che co sto ca**o di VC++ è enorme..

P.S.: parlando di Unix-like .. io invece sto scoprendo piano piano BSD.. (piano piano piano piano :p) ed è fiQo davvero! :D

Loading