1

salut a tous !
alors comment fait-on pour obtenir ,en assembleur un pointeur sur un fichier qui se trouve dans la vat?
il faut passer par LEA ?
est ce qu'on peut traiter des SYM_ENTRY en assembleur ?
euh...

2

Dis-toi bien que tout ce que tu peux faire en C, tu peux le faire en assembleur.
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La 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.

3

euh oui je veux bien mais coment what
euh...

4

moi je connais rien à l'assembleur ... mais vraiment rien du tout
euh...

5

bah commence par apprendre les bases avant de t'attaquer à ce genre de trucs compliqués roll
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La 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.

6

oui mais là j'ai juste besoin de ca pour appeler une librairie de kernel,
jvé kan meme pas apprendre tout l'assembleur juste pour ca non gol ?
euh...

7

en même temps, l'assembleur, t'as vite fait le tour. Il doit y avoir 70 instructions à tout casser neutral
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

8

oué d'accord mais t'a oublié de mentionner toutes les interruptions couplé avec les fonctions .....
en gros t'a ptet 70 instructions mais voila y'en a que tu transforme ds tous les sens ...

bon pour ma question j'essaie de faire une des fontions inline qui devrai se presenter :
->soit sous la forme den module autonome auquel on donne juste un char[16] ds lequel il y a le chemin du fichier a traiter , dont ils doivent à trouver l'adresse
->soit on leur donne un pointeur pour le fichier a traiter


mais ds les 2 cas je n'arrive pas a creer de pointeur que l'assembleur puisse traiter , je ne sais pas obtenir l'offset d'un fichier ds la vat en assembleur

qqun peut juste me le dire ?
euh...

9

toutes les interruptions couplé avec les fonctions

késako ?

pour un nom de chemin, il faut au moins un char[18]
bon tu veux obtenir quoi au final ? j'ai pas compris. Juste un symEntry en ayant le nom du fichier de type "folder\file" ?
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

10

vi
euh...

11

SymFindPtr(SYMSTR(char),0); ne marche pas ?
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

12

enfin non ...
en fait je sais pas tro
j'aimerais utiliser ziplib et filelib mais je comprend pas tres bien , ziplib demande des pointeurs,mais des pointeurs c'est des adresse non? alors pkoi y parle de HANDLE ..... chuis cmpletment perdu
euh...

13

si si c'est pas la le probleme :comment je met le SYM_ENTRY ds un registre , quand je le fais , tigcc ne reconnais pas SYM_ENTRY en asm68k
euh...

14

je vais essayer de faire ça
int compress_file(char* name) {
 asm("
 move.l    4(%a7),%a0
 clr.w     -(%a7)
 move.l    %a0,-(%a7)
 move.l    200,%a0
 move.l    2572(%a0),%a0
 jsr      (%a0)
 addq.l    #6,%a7
 moveq    #0,%d0
 jsr      ziplib@0005
 ");
}


edit : qqes corrections
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

15

par contre, il faut l'appeler avec
compress_file(SYM_STR(name));
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

16

et je persiste à croire que c'est faisable en C
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

17

arf desolé flanker je t'ai fait tourné en bourrique, excuse moi j'ai pas assez cherché par moi meme ... sad
bon g trouvé la solution mais il me reste un probleme de syntaxe asm , keskiva pas ds le bloc d'asm ci dessous?
void compress(void *ptr)
{
asm("move.l %0,%%a0;"
: :"g"(ptr));
asm("move.b #0,%d0");
asm("ziplib::zipfile");
}
void _main(void)
{
SYM_ENTRY *pteur=SymFindPtr(SYMSTR("main\tetris"),0);
compress(HeapDeref(pteur->handle));
}
euh...

18

oups g oublié de dire ce qui va pas, tigcc dis : rest of ligne ignored; fist ignored character is ";"
je comprend pas comment il faut ecrire l'asm inline ...
euh...

19

essaie :
compress(SYM_ENTRY *ptr) {
  asm("
   move.b  #0,d0
   move.l   4(a7),a0
   jsr         ziplib::zipfile
  ");
  }


void _main(void) {
SYM_ENTRY *ptr = SymFindPtr(STM_STR("folder\file"),0);
compress(*ptr);
}
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

20

moi non plus je ne sais pas comment il faut faire de l'asm inline sad
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

21

erf ca marche pas
c toujours a cause de ce jsr ziplib::zipfile j'ai meme mis ziplib.h ds les headers mais rien a faire ...

en assembleur general keskiva pas ds la suite
	.text
	.even
	.globl	compress
compress:
	link.w %a6,#0
#APP
	move.l 8(%a6),%a0
               move.b #0,8(%a6)
               jsr ziplib::zipfile                 //la y me dit que ca va pas
#NO_APP
	unlk %a6
	rts
	.text
euh...

22

eeek c'est vraiment compilé comme ça du C eeek sick
ça doit être un problème dû au kernel. regarde bien comment on crée un programme kernel en C. Il doit manquer l'équivalent d'un xdef _main ou d'un include "doorsos.h"
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

23

en plus, y a une merde au niveau du move.b #0,8(%a6)
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

24

bon g refé et g mis #include <kernel.h> comme c dis dans la doc de preos mais y'a toujours l'erreur pour jsr ziplib:;zipfile
bad expression
et parse error -- statement 'jsr ziplib::zipfile" ignored
et si je mets #include "ziplib.h"
tigcc voit des erreurs partout ,
y fo demender a pphd ou a kevin kofler ....
euh...

25

probablement, ils connaissent bien mieux le C que moi (c'est pas dur)
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

26

Ximoon
: Dis-toi bien que tout ce que tu peux faire en C, tu peux le faire en assembleur.
bidoo :
euh oui je veux bien mais coment what

tigcc -S fichier.c te donne le code ASM correspondant.
bidoo
: oui mais là j'ai juste besoin de ca pour appeler une librairie de kernel,

À bas les librairies kernel! Les appels à une librairie kernel sont très lents sur la TI-89 Titanium. ziplib, tu dis? http://nico.hibou.free.fr/complib.php
Flanker :
je vais essayer de faire ça
int compress_file(char* name) {
 asm("
 move.l    4(%a7),%a0
 clr.w     -(%a7)
 move.l    %a0,-(%a7)
 move.l    200,%a0
 move.l    2572(%a0),%a0
 jsr      (%a0)
 addq.l    #6,%a7
 moveq    #0,%d0
 jsr      ziplib@0005
 ");
}

Assembleur inline invalide. Le compilateur C est libre de rajouter des instructions avant et après, et donc:
* Ton 4(%a7) foire.
* %d0 n'est pas garanti être intact entre le retour de ziplib et celui de compress_file.
* ziplib@0005 n'est pas un symbole GNU as valide. (Il faut mettre ziplib__0005.)
bidoo :
arf desolé flanker je t'ai fait tourné en bourrique, excuse moi j'ai pas assez cherché par moi meme ... sad
bon g trouvé la solution mais il me reste un probleme de syntaxe asm , keskiva pas ds le bloc d'asm ci dessous?
void compress(void *ptr)
{
asm("move.l %0,%%a0;"
: :"g"(ptr));
asm("move.b #0,%d0");
asm("ziplib::zipfile");
}
void _main(void)
{
SYM_ENTRY *pteur=SymFindPtr(SYMSTR("main\tetris"),0);
compress(HeapDeref(pteur->handle)); }

Assembleur inline invalide:
* Il faut mettre tes 3 instructions en un seul asm.
* %d0 n'est pas garanti être intact entre le retour de ziplib et celui de compress.
* ziplib::zipfile n'est pas un symbole GNU as valide, et il faut utiliser le code numérique.
* Il manque le jsr.
Flanker :
essaie :
compress(SYM_ENTRY *ptr) {
  asm("
   move.b  #0,d0
   move.l   4(a7),a0
   jsr         ziplib::zipfile
  ");
  }

Assembleur inline invalide:
* Il manque les % devant les registres.
* Ton 4(%a7) foire.
* %d0 n'est pas garanti être intact entre le retour de ziplib et celui de compress.
* ziplib::zipfile n'est pas un symbole GNU as valide, et il faut utiliser le code numérique.

Et on n'a pas besoin d'assembleur inline pour appeler ziplib, il suffit de déclarer la fonction en passage par registres (avec le bon nom, c'est-à-dire ziplib__0005).
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

27

Kevin Kofler :
Et on n'a pas besoin d'assembleur inline pour appeler ziplib, il suffit de déclarer la fonction en passage par registres (avec le bon nom, c'est-à-dire ziplib__0005).


qu'est ce que tu veux dire par la? comment tu connais l'adresse des registres ?
tu peux me donner un exemple ?
tu veux dire qu'il faut faire comme hibou ? mais je vois meme pas dans son code où il fait appel aux fonctions ziplib où Hufflib
il fait :
extern SYM_ENTRY * zip_sym_var(SYM_ENTRY * sym_var_src, const char * nom_var_dest, char * pb);
mais là je vois vraiment pas où il peut appeller ziplib::compress equ ziplib@0004 ?

bon a part ca, c'est du beau boulot hibou ! meme si je comprend rien a ce que t'a fait tongue
bon encore a part ca..:ca marche (enfin le tigcc ne retourne pas d'errreur )
#define USE_KERNEL
#include <tigcclib.h>

void compress(void *ptr) 
{ 
asm("move.l %0,%%a0
        move.b #0,%d0
        jsr ziplib__0006"
        ::"g"(ptr));
        ngetchx();
       printf("ca a fonctionné\nl'erreur est aprés ! ");

   
} 
void _main(void)
{
SYM_ENTRY *pteur=SymFindPtr(SYMSTR("main\che"),0);
compress(HeapDeref(pteur->handle));
}


le texte ne s'affiche pas donc l'erreur se situe dans la portion asm
dans la status ligne on voit extracting puis ensuite la ti bug

donc 2 solution :
-soit le pointeur que j'ai donné n'est pas valide, il faut un autre type :Hibou parle de unsigned char *
pt=(char*)HeapDeref(pteur->handle) il faut faire ca pour l'obtenir ? unsigned char *

mais a ce moment la , comment faire en inline asm pour gerer un pointeur unsigned char* il faut mettre quoi a la place de ::"g"(ptr) ????

-soit , tous ce que j'ai fait est faux

qqun peut-il m'aider ?
euh...

28

j'ai rien pigé a ce kil raconte Mr hibou , je vois meme pas ou elles sont definie ses fonction..... c tro zarb
et puis ton code marche pas Mr bidoo!
rajoute ca à ton code asm : au debut fé movem.l d0/a0,-(a7) et à la fin fô fér movem.l (a7)+,d0/a0
et puis lis un peu..
Mr Flanker
... int compress_file(char* name) {
asm(" ...
Mr Flanker
...compress_file(SYM_STR(name)); ...

mais personne n'a jamais fait cette fonction normalement juste comme Mr bidoo veut faire avec comme argument juste un char[18] pour le nom de la variable :
Mr flanker tu pourrais pas me filer le source de Cslaunch ou juste la partie qui correspond à zip , ce serait cool



NTW !!!!!

29

30

Mr matthieu a raison, il faut soit dire que tu détruis ces registres (et je soupçonne que ziplib en détruit d'autres, d'ailleurs, donc il faut aussi en tenir compte), soit les restaurer à la main.

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)