mat Le 19/07/2002 à 20:56 comment peut on retrouver l'adresse d'une fonction?
Vive le coding gba.
www.codegba.fr.st
zdr Le 19/07/2002 à 20:58 Si tu as la fonction :
void Fonction(void) { ... }
essaie : (char *)Fonction
mat Le 20/07/2002 à 12:47Edité par mat le 20/07/2002 à 12:47 pourquoi quand je veux mettre l'adresse de la fonction en mémoire (à une adresse précise), gcc me dit
warning: assignment makes integer from pointer without a cast.
En plus ça a pas l'air de marcher.
j'utilise ça:
*(u16*)0x3007ffc=&func;
Vive le coding gba.
www.codegba.fr.st
heu...
je sais pas trop.
(vive les pointeurs)
essaye de supprimer la première étoile...
à non.
déjà, ya quelque chose qui va pas : sur proc M68k, les adresses sont sur 32bits (enfin, sur 245 bits, vu que le bus d'adresse est de 24 bits), mais elles sont mémorisées sur 32 bits...
or, u16, je suppose que c 16 bits (unsigbed short, sur 16 bits, surement)
=> déjà là, y'a qqc qui va pas aller
zdr Le 20/07/2002 à 14:43 Méthode utilisée pour déterminer la taille d'une fonction (cf. FAQ de TIGCC) :
void MyFunction(void)
{
// The function body...
}
void End_Marker(void);
asm("End_Marker:")
...
...
num_of_bytes = (char*)End_Marker - (char*)MyFunction;
D'où le post #1 et ta remarque, Thibaut.
mat Le 20/07/2002 à 15:02 ouias excusez moi u16 c'est unigned short.
Comme je travaille sur gba je pense ps que ce soit pareill que sur m68k.
Par contre ce que j'aimerais savoir c'est pourquoi il ya ce warning
Vive le coding gba.
www.codegba.fr.st
zdr Le 20/07/2002 à 15:05 Essaie :
*(u16*)0x3007ffc=(u16*)(&func);
ou
*(u16*)0x3007ffc=(u16*)(func);
mat Le 20/07/2002 à 15:11 ça me fait toujours la même chose..
Vive le coding gba.
www.codegba.fr.st
mat Le 20/07/2002 à 15:17 en fait ce que contient l'adresse 0x3007ffc c'est l'adresse de la fonction vers laquelle le processeur doit s'orienter lors d'un interuption. c'est ce que j'en ai déduit d'aprés ça:
It then passes control to the address stored in the memory address 0x3007FFC. This is where we need to put our interrupt handler. What do I mean by that? That just means that the we need to point that register to our interrupt handler by making it equal to our interrupt handlers address
Vive le coding gba.
www.codegba.fr.st
zdr Le 22/07/2002 à 08:41 Donc on aurait pu mettre :
*(void **)0x3007ffc= func; ?