N'ayant pas trouvé de fonction pour faire ça, je penses qu'il faut additionner la taille de chaque fichier...
(Ou alors, pour simplifier, tu ne met pas cette focntion dans ton explorer !)
on peut pas tout avoir... dommage mais bon.
a mon avis, PCT ne s'embete pas a additionner la taille de ts les fichiers...
A toutes fin utiles, PCT est écrit en ASM...
Et l'ASM permet de faire + de trucs que le C... (Par exemple, flib, qui est écrit en C utilise une routine ASM pour déterminer la valeur du contraste... car le C n'a pas de fonction écrit pour faire ça).
Nhdpp Le 11/06/2001 à 23:01 heu je ne suis pas sur...
tout est possible en asm, et tout est possible en C!
Neamoins, il faut juste savoir que le c ne permet pas de faire de tres bonne optimisation contrairement a l'asm...
Ceci etant dit, PCT est oblige de faire la somme des repertoires au minimum... et ce ne doit pas etre trop long de faire la somme des tailles de dossiers (au niveau tmp cpu)!
tout est possible en C ?
Heu... je croyais qu'on ne pouvais faire que les choses pourlesquelles des focntions ont été écrites... quoique, pourquoi pas.
Il y a des instructions que l'on ne peut utiliser en C qu'avec de l'assembleur inline. Un exemple: trap.
Nhdpp Le 11/06/2001 à 23:01 es tu sur que cela n'est pas possible en C? il me semble que si...
exact, bon exemple les traps.
Effectivement, tu peux les utiliser en C, mais en utilisant de l'ASM inline (donc de l'ASM et non pas du C !)
asm("trap #4"); // Eteint la TI (revient en gros au même que la fonction off() de TIGCC, mais prend un peu moins de mémoire, de l'ordre de quelques octets il me semble...
Nhdpp Le 11/06/2001 à 23:01 Il doit bien etre possible d'utiliser les trap sans l'istruction TRAP elle meme.. c'est juste une question d'astuce non?
heu... comment qu'on fait ?
Erf ... ca sert a rien comme methode, c'est juste pour executer les instruction qu'on veut en pur C, m'enfin, voila le principe:
Tu ecrit la routine en asm ou en C
Tu compile, et tu recupere en hexa
Tu met ca dans un tableau, et tu l'execute avec un typecast:
((void*)())(&(char[])({0xEB, 0x75}))() //je suis pas sur de la syntaxe, mais ca doit etre qqch dans le genre (cf. ancienne versions de tigcc, toutes les fonctions (autres que ROM_CALLs) etaient faites comme ca)
//Je crois que EB75 est un rts, mais je suis pas sur du tout
houla... C'est vrai que l'ASM inline parait + simple !
Bon, si déjà le vieux topic est ressorti, autant répondre à un détail dont je ne m'étais pas rendu compte:
> ((void*)())(&(char[])({0xEB, 0x75}))()
Attention, ce n'est du "pur C" qu'en ISO C-99. Pour les versions précédentes du standard, c'est une extension GNU!
Miles Le 11/02/2002 à 07:47 et sans les trap, on fait comment pour le superviseur ?
Miles Le 11/02/2002 à 15:04 C'est vrai qu'à la fin, c'était du C, mais au début, c'est de l'ASM, mais - même en C - s'il y a un appel à un TRAP, s'il y a des instructions superviseur, ça va planter...
Kevin Kofler : je crois que cette syntaxe ne fonctionne pas.
C'est parce que Dark Angel n'a pas mis les parenthèses au bon endroit.
Voilà la syntaxe correcte pour une fonction qui ne fait rien en hex-array:
((void (*) ())((unsigned short[]){0x4e75}))();
Ah oui, merci, ca marche. Mais comment forcer tigcc à éviter de créer une fonction, le faire en in-line?
Je ne pense pas que ce soit possible. GCC ne peut mettre inline que des fonctions C. Sinon, il faut passer par des asm("").
[edit]Edité par Kevin Kofler le 12-02-2002 à 23:42:50[/edit]