1. C'est .long qu'il faut mettre.
2. C'est le même hack que __MARK.
Pas du tout. On en a besoin pour quoi faire, le 0? ttextract n'en veut pas, du 0, justement!
#33> Kevin, j'avais pourtant suivi ta recomandation: metre un smiley pour marquer la dérision. Tu me déçois.
Enfin ça change rien le zero ou pas, c'est juste une convention, pour ttextract vous avez choisi de pas en metre.
Seb C bien
C bien, C beau, C ni Bosch ni Bush: C ++
#36: non, pas besoin.
1. EXECUTE_IN_GHOST_SPACE n'est fait qu'une fois.
2. Tu rajoutes simplement une seule fois 0x40000 au pointeur qui pointe vers ton fichier externe en RAM, avant de l'utiliser.
Bizarre...
As-tu contrôlé que tu as assez de place sur la pile ?
La fonction est copié en ram alloué par malloc...
En fait je copie le code associé a la fonction en ram et j'execute....
Pareil pour un
void ma_func(int *a,int *b)
{
(*a)+=*b;
ngetchx();
}
par contre j'ai pas verifier si le malloc me sort bien un adresse paire mais ya pas de raison.....
Si dieux existe alors Armin van Buuren en est 1!!
Pour me contacter sur msn:mastergb@hotmail.com
malloc sort toujours une adresse paire.
Mais c'est bizarre que ça ne marche pas. Comment tu copies la fonction ?
sisi
*a+=*b;
marche c'est bon erreur de ma part..
l'erreur vient d'ailleur...
PS: le fonction je le copie avec memcpy
Si dieux existe alors Armin van Buuren en est 1!!
Pour me contacter sur msn:mastergb@hotmail.com
Bon je rectifie
l'appel a clrscr() fait tout deconner...
Pourquoi?
Peut etre parce qu'il a a besoin de variable specifique a l'executable et comme l'exe n'a pas de table de relocation...
Moa je vois que ca...
Si dieux existe alors Armin van Buuren en est 1!!
Pour me contacter sur msn:mastergb@hotmail.com
l'exe n'a pas de table de relogements ?
Ce qu'il faut, c'est que ta petite fonction que tu copies en RAM n'ait pas besoin d'être relogée pour fonctionner, alors tu peux la copier quelque part et l'exécuter.
Mais ton exécutable, si tu le compiles avec TIGCC, il a forcément une table de relogements.
PpHd Le 05/07/2003 à 16:58 A condition de na pas faire OIPTIMIZE_ROM_CALL.
Ou de le faire aussi dans le programme "client".
Nan je sais je vais passer par une interface..
Le programme principal exportera les methodes que la fonction a besoin en gros de la technologie COM....
Si dieux existe alors Armin van Buuren en est 1!!
Pour me contacter sur msn:mastergb@hotmail.com
J'ai parlé trop vite...
Ca fonction pas directement sous genlib car un truc comme ca ne marche pas:
void (*addr)();
addr=gl_draw_line;
et apres je fais
addr(10,10,50,50,3); ca marche pas car gl_draw_line n'est pas directement une fonction C (elle passe par les registres)
Et de l'autre coté cette fonction est appelé comme une fonction C
Donc comment casté un pointeur de fonction pour qu'il utilise les conventions qui passe par les registres? comme ci dessous:
void gl_draw_line(short x1 D0, short y1 D1, short x2 D2, short y2 D3, short color D5);
Si dieux existe alors Armin van Buuren en est 1!!
Pour me contacter sur msn:mastergb@hotmail.com
quand tu définit ton pointeur sur fonction il faut aussi définir les argument que prendra la fonction.

Que cache le pays des Dieux ? -
Forum Ghibli -
Forum LittéraireLa fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.
Oui mais ya des chance que specifier des registres pour arguments ne marche pas..
Sinon c amarche en redefinissant la fonction dans l'executable principal
Si dieux existe alors Armin van Buuren en est 1!!
Pour me contacter sur msn:mastergb@hotmail.com
La méthode la plus logique fonctionne:
void (*addr)(register short asm("d0"),register short asm("d1"),register short asm("d2"),register short asm("d3"),register short asm("d5"));
ou si tu préfères:
void (*addr)(register short x1 asm("d0"),register short y1 asm("d1"),register short x2 asm("d2"),register short y2 asm("d3"),register short color asm("d5"));
(Les noms des paramètres peuvent être omis dans les prototypes.)
Et si tu as besoin d'attributs:
void (__attribute__((stkparm))*addr)(short,short);
Juste par curiosité, mastergb, que veux tu faire avec des bouts de code en binaire?
Boogerman
Bouger, travailler, manger et se reposer, c'est la devise de la tortue!