Bon voila j'ai de nouveau la même question que j'avais déja posé mais je n'avais jamais obtenu une réponse claire:
J'aimerais pouvoir ecrire UNE fonction en C que et OBTENIR le code binaire associé a cette fonction.
c'est a dire que si j'ecris la fonction:
ma_func:
movem.l d3-d7/a2-a6,-(a7)
ROM_CALL ngetchx
movem.l (a7)+,d3-d7/a2-a6
rts
je veux obtenir le bloc binaire associé a cette unique fonction.
Bien evidemment le code ne sera pas en assembleur mais en C.
Je suis persuadé que c'est juste une utilisation des executables tigcc mais je n'ai pas reussi a le faire.
Si dieux existe alors Armin van Buuren en est 1!!
Pour me contacter sur msn:mastergb@hotmail.com
Pen^2 Le 04/07/2003 à 11:34 heuu, tu mets un label à la fin de la fonction et tu copies la mem entre le pointeur sur la fonction et le label ?
ps : c plus detaillé dans la faq de tigcc pour avoir la taille d'une fonction je crois.
Pen^2 Le 04/07/2003 à 11:49 ah, ok.
il doit falloir faire un fichier objet ou qq chose comme ça, je ne sais pas trop en fait..
PpHd Le 04/07/2003 à 11:50 Une solution bateau en attendant l'option -bin de ld-tigcc (Ou peut etre l'y est deja ?)
Tu rajouter au debut:
unsigned long = 0xDEADDEAD;
//Ton code./
unsigned long = 0xADAEADEA;
Et tu utlisies ttextract de la tict.
Pen^2 Le 04/07/2003 à 12:01 mais ac le relogement y'aura pas des pbs ?
Je veux bien Kevin mais en PV....
Bon je peut le faire avec le debuggeur de virtual-ti mais c'est lourd...
Si dieux existe alors Armin van Buuren en est 1!!
Pour me contacter sur msn:mastergb@hotmail.com
Dans ce cas, non, pas besoin de relogement (relocation), ça devrait marcher sans.
J'ai essayer avec les marquers de PpHd avec son code les valeurs hexa n'apparaissent même pas dans l'exe.
Par contre suivi d'un static si mais le compilo les range l'une a cote de l'autre...
Donc ca marche pas..
Si dieux existe alors Armin van Buuren en est 1!!
Pour me contacter sur msn:mastergb@hotmail.com
Pen^2 Le 04/07/2003 à 16:25 et si tu fais de l'asm inline ? il doit pas les bouger si ?
Sinon, t'écris dans le .s généré et tu le réassembles
ouah ca je sais pas faire....
Si dieux existe alors Armin van Buuren en est 1!!
Pour me contacter sur msn:mastergb@hotmail.com
Non, le string "hello world" ne sera pas dans func1.bin
Et dire que j'allais ajouter que je me demandais si ça gerait aussi la realloction table...
Je suppose qu'il n'est pas envisagé d'implémenter proprement un truc genre "mark" tel que tout ce qui soit entre deux marks soit compilé entre ces marks, y compris la string.
Puisque la réponse est (sans doute) non (et c'est pas une réponse si injuste), peut-être n'aurais tu pas du écrire tigcc -Os prog.c car je crois que quand je t'ai révélé utiliser ce hack tu m'as dit de pas le faire en C ou au moins d'utiliser -O0.
Seb C bien
C bien, C beau, C ni Bosch ni Bush: C ++
Le fait est tout simplement que les fonctions dans un fichier externe et chargeables une par une ne sont pas du tout prévues par le langage C. Ce n'est pas du Lisp.
Kevin, essaye de comprendre un peu l'ironie. Cette allusion à la réalocation table était référence au fait que j'imaginait que MARK était un truc légal bien foutu (dont j'aurrai pu me demander s'il gerrait la réallocation table) et que tout à coup en découvrant ton post les illusions cessent quand tu me dit que c'est juste .asciz. Inutile de me dire que ça gérait pas la réallocation table, si je ne l'avais pas su j'aurais utilisé une tournure comme Et ça gère même la réalocation table? C'est super alors. En général "et dire que j'allais..." indique que la situation a changé (d'ou l'imparfait) et est rarement marqueur du sérieux de ce qui suit. Je comprends mieux maintenant qu'on te matraque sur le topique [modérateurs] à propros de ta mauvaise compréhension de l'ironie.
Seb C bien
C bien, C beau, C ni Bosch ni Bush: C ++
Et pour l'optimisation, si c'est
ma_func:
movem.l d3-d7/a2-a6,-(a7)
ROM_CALL ngetchx
movem.l (a7)+,d3-d7/a2-a6
rts
elle fera pas grand chose, même si c'est ecrit en C!
Seb C bien
C bien, C beau, C ni Bosch ni Bush: C ++