Accueil Ti-Gen Foire Aux Questions Chat sur le chan #tigcc sur IRC
Liste des membres Rechercher Aide
Bienvenue Invité !   Se connecter             Mes sujets   
Administrer
0 membre(s) et 1 visiteur(s) actif(s) durant les 5 dernières minutes Utilisateurs actifs : Aucun membre + 1 visiteur
Avant de poster sur le forum, il y a des régles de bases à respecter pour une bonne entente et un respect de tous.
Veuillez lire la charte du forum.
  :: Index » Forum Ti68K » Programmation Assembleur 68K » ASM dans une fonction C (10 réponse(s))
./POST DE DEPART (post n°0)   Marquer comme non lu.
Orage Ecrit le: Dimanche 14 mars 2004 à 08:55 Déconnecté(e)    Voir le profil de Orage Envoyer un email à Orage Envoyer un message privé à Orage  


Je suis en train d'améliorer la vitesse de OrageGL, et celà passe notamment par l'utilisation d'ASM. J'aurais besoin d'un peu d'aide svp :)

Lorsque je met un argument ASM dans une fonction C comme suivant, le programme me met en info "Unused parameter buff" (je n'utilise pas buff, mais a0). Serait-il possible de mettre en paramètre uniquement %a0 ? Ou alors comment faire pour éviter cet info ?

void GL_DisplayB(void *buff asm("%a0"))
{
short i;
asm("move.l #19456, %a1");
for(i=0 ; i<120 ; i++)
{
asm("move.l (%a0)+, (%a1)+");
asm("move.l (%a0)+, (%a1)+");
asm("move.l (%a0)+, (%a1)+");
asm("move.l (%a0)+, (%a1)+");
asm("move.l (%a0)+, (%a1)+");
asm("move.l (%a0)+, (%a1)+");
asm("move.l (%a0)+, (%a1)+");
asm("move.l (%a0)+, (%a1)+");
}

return;
}
    
./Post n°1   Marquer comme non lu.
Sasume Ecrit le: Dimanche 14 mars 2004 à 12:27 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

Je ne pense pas que tu puisses, vu que ta fonction est à moitié en C, et à moitié en ASM.
Essaie de faire : void GL_DisplayB(void * asm("%a0")) {...}
Mais ça m'étonnerait que ça passe.

Sinon, programme tout en ASM.
Et optimise. Ce n'est pas le fait d'utiliser l'ASM qui te fera aller plus vite si ton code n'est pas optimisé.
    
./Post n°2   Marquer comme non lu.
Orage Ecrit le: Dimanche 14 mars 2004 à 12:57 Déconnecté(e)    Voir le profil de Orage Envoyer un email à Orage Envoyer un message privé à Orage  


Ok merci.
Pour l'optimisation du code, je ne vois pas ce que je peux faire de plus. (j'obtient une vitesse comparable à la fonction équivalente de extgraph 1.x)
    
./Post n°3   Marquer comme non lu.
Kevin Kofler Ecrit le: Dimanche 14 mars 2004 à 14:31 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


Ce code n'est pas valide. Rien ne garantit que buff se trouve toujours en %a0 à cet endroit. Et de plus, il faut mettre les séquences d'instructions assembleur en un seul asm. Code correct:
void GL_DisplayB(void *buff asm("%a0"))
{
short i;
void *p=(void*)19456;
for(i=0 ; i<120 ; i++)
{
asm("move.l (%0)+, (%1)+
move.l (%0)+, (%1)+
move.l (%0)+, (%1)+
move.l (%0)+, (%1)+
move.l (%0)+, (%1)+
move.l (%0)+, (%1)+
move.l (%0)+, (%1)+
move.l (%0)+, (%1)+"::"a"(buff),"a"(p):"memory","cc");
}

return;
}
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°4   Marquer comme non lu.
Orage Ecrit le: Lundi 15 mars 2004 à 12:19 Déconnecté(e)    Voir le profil de Orage Envoyer un email à Orage Envoyer un message privé à Orage  


Ok, merci Kevin :)
Pour éviter les pbs, j'ai commencé à recoder la bibliothèque en ASM -comme le conseillait Sasume-, et j'obtient une vitesse tout à fait correct sur le traitement des buffers :)
    
./Post n°5   Marquer comme non lu.
Billy Charvet Ecrit le: Mercredi 17 mars 2004 à 14:45 Déconnecté(e)    Voir le profil de Billy Charvet Envoyer un email à Billy Charvet Visiter le site WEB de Billy Charvet Envoyer un message privé à Billy Charvet  


Pardon mais je ne comprends pas du tout la syntaxe de la dernière ligne:

move.l (%0)+, (%1)+"::"a"(buff),"a"(p):"memory","cc");
Je suis tel la fleur du lotus.
Bien que naissant de la boue,
aucune boue n'y adhère.
    
./Post n°6   Marquer comme non lu.
Kevin Kofler Ecrit le: Mercredi 17 mars 2004 à 18:09 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


Aucune sortie, 2 entrées dans des registres d'adresses, modifie la mémoire et le code de condition. (Pour les 2 derniers clobbers, ce n'est en général pas grave si on les oublie, mais il vaut quand-même mieux les mettre pour éviter toute possibilité d'avoir des ennuis.)
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°7   Marquer comme non lu.
Billy Charvet Ecrit le: Jeudi 18 mars 2004 à 16:59 Déconnecté(e)    Voir le profil de Billy Charvet Envoyer un email à Billy Charvet Visiter le site WEB de Billy Charvet Envoyer un message privé à Billy Charvet  


OK. http://perso.wanadoo.fr/variable/v29b/gfx/s/top.gif(Faut que je révise ça....)
Je suis tel la fleur du lotus.
Bien que naissant de la boue,
aucune boue n'y adhère.
    
./Post n°8   Marquer comme non lu.
Invité Ecrit le: Mercredi 23 juin 2004 à 15:40 Déconnecté(e)    
 
personnelement, je pense que de l'ASM pur optimise mieux les programmes (si le programme en question est bien codé!)
    
./Post n°9   Marquer comme non lu.
Benjy Ecrit le: Mercredi 23 juin 2004 à 17:29 Déconnecté(e)    Voir le profil de Benjy Envoyer un email à Benjy Visiter le site WEB de Benjy Envoyer un message privé à Benjy  


perso moi l'asm ne me parle pas contrairment au C!!
Le langage C y'a pas mieux!!!
    
./Post n°10   Marquer comme non lu.
Lionel Debroux Ecrit le: Mercredi 23 juin 2004 à 17:36 Déconnecté(e)    Voir le profil de Lionel Debroux Envoyer un email à Lionel Debroux Visiter le site WEB de Lionel Debroux Envoyer un message privé à Lionel Debroux  

Ca devient rapidement difficile de coder un programme complet un peu complexe en ASM pur. On y passe le triple de temps...
Lionel Debroux - membre de TICT.
    
  :: Index » Forum Ti68K » Programmation Assembleur 68K » ASM dans une fonction C (10 réponse(s))
Pages : 1/1     « [1] » »|

.Répondre à ce sujet
Les boutons de code
[B]old[I]talic[U]nderline[S]trikethrough[L]ine Flip Hori[Z]ontallyFlip [V]erticallySha[D]ow[G]low[S]poilerCode [G][C]ite
Bullet [L]istList Item [K] Link [H][E]mail[P]icture SmileysHelp
Couleurs :
Saisissez votre message
Activer les smileys
     

Forum de Ti-Gen v3.0 Copyright ©2004 by Geoffrey ANNEHEIM
Webmaster: Kevin KOFLER, Content Admins: list, Server Admins: Tyler CASSIDY and Kevin KOFLER, DNS Admin: squalyl
Page générée en 70.06ms avec 19 requetes