| Amiga Impact

  · Accueil
  · Actualités
   · Proposer une info
  · Agenda
   · Proposer une date
  · Articles
  · Forum
  · Petites Annonces
  · Chat IRC
  · À propos du site
   · Confidentialité



 | Connexion

Identifiant :

Mot de passe :

 Mémoriser

  · Inscription
  · Mot de passe oublié



 | En ligne

Illustration du profil de Sodapop Illustration du profil de bSr43




 | Nous suivre

Flux RSSGoogle+TwitterFacebook





Forum

/   Forums d'Amiga Impact
   /  GCC et MOVEM
4 sujets de 1 à 4 (sur un total de 4)

Auteur Messages   
#6855 GCC et MOVEM
 le 21/01/2009 à 13:36


thellier
Participant
  • Messages : 614

Bonjour

Existe il une syntaxe en C qui fasse générer un MOVEM dans le binaire ASM 680X0 ?

Pour par exemple copier 4 valeurs en mémoire en une seule instruction

MERCI

Alain

#109734 Re: GCC et MOVEM
 le 21/01/2009 à 22:30


seg
Participant
  • Messages : 917

Je crois que c’est un truc comme ca sur GCC:

D’abord, definis toi ce define pour te simplifier la vie:

#define ASMOPT(code) {__asm__ __volatile__(code: : : « cc »);return;}

Puis, dans ton code:

ASMOPT(« movel d1,d0; subqw #2,d0 »);

(Il s’agit d’un exemple bidon).

Attention, c’est de la syntaxe MIT, pas MOT! J’en sais pas plus. C’est un ami qui m’avait montré ca et je n’utilise pas Gcc sur Amiga.

Je te conseille de chercher un peu plus d’infos sur google.

a+

[EDIT] Je pense que j’ai mal compris ta question. En fait, je ne connais pas de syntaxe C qui fasse ce que tu demandes. Il faut, a mon avis, que tu forces ton code Asm a l’endroit ou tu en as besoin.

#109735 Re: GCC et MOVEM
 le 22/01/2009 à 18:25


thellier
Participant
  • Messages : 614

Effectivement c’est pas vraiment ce que je demandais mais c’étais sympa de répondre :-)

Le problème d’inclure de l’assembleur comme tu fais c’est qu’on assume utiliser D0

Or ce registre peut déjà être utilise par le compilo à ce moment

L’idéal serait qu’une syntaxe C comme

register LONG x,y,z,w;

LONG *t;

*t++=x;

*t++=y;

*t++=z;

*t++=w;

devienne une seule instruction asm : un MOVEM de d0-d3

A y réfléchir ta méthode peut marcher si on utilise la syntaxe Amiga-GCC qui fixe un registre particulier pour une variable

le problème c’est que ça bloque ces 4 registres sur ces 4 variables qui servent vraiment que pour la copie du movem

Alain

#109736 Re: GCC et MOVEM
 le 22/01/2009 à 19:30


corto
Participant
  • Messages : 1128

La syntaxe de l’assembleur inline n’est pas très simple et surtout très mal documenté, dès qu’on sort un peu du x86 et de l’ARM.

Voici ce que j’ai trouvé :

int t1,t2,t3,t4;

asm volatile (« moveml %1/%2/%3/%4,%[email protected]« 

: « =a » (out), « =d » (t1), « =d » (t2), « =d » (t3), « =d » (t4)

: « 1 » (0), « 2 » (0), « 3 » (0), « 4 » (0), « 0 » (&stack[4]));

Dans ce cas, il semble que 4 registres soient chargés depuis la pile.

Je te conseille de faire des essais et de voir le code généré. Je me demande si l’exemple si dessus ne devrait pas indiquer au compilo que le contenu des registres a été modifié. Ou alors le fait qu’ils soient marqués comme « =d » suffit …


4 sujets de 1 à 4 (sur un total de 4)

Vous devez être connecté pour répondre à ce sujet.

                   
Derniers sujetsFraîcheur
 · MSXVR il y a 47 minutes
 · La Vampire V4 il y a 1 hour et 38 minutes
 · [HELP WANTED] pour François LIONET / projet AMOS2 il y a 4 hours et 2 minutes
 · [VENDS] BAISSE de prix jeux Amiga /atari ST /IBM pc il y a 4 hours et 41 minutes
 · Gouky il y a 5 hours et 42 minutes
 · Kickstart 3.1.4 ou 3.X de cloanto ? ou custom 3.9 il y a 7 hours et 11 minutes
 · bouton : forum à suivre il y a 8 hours et 50 minutes
 · [ESTIMATION] Prix d’un amiga 600? il y a 8 hours et 56 minutes
 · Démarrage bizarre A1200 il y a 16 hours et 2 minutes
 · [DIY] Book Amiga il y a 16 hours et 3 minutes





RechercheFraîcheur


Copyright © 2004-2019 Amiga Impact. Tous droits réservés. Les marques citées sont déposées par leurs propriétaires respectifs.
Conditions d'Utilisation, Politique de Confidentialité et Information sur les cookies.


Fil RSS WordPressNicolas Gressard, Conseil et développement informatique

Do NOT follow this link or you will be banned from the site!