(Courriels de diversion: <transi@ranches-forestiers.com> <constitutionnellement@souhaiterez-instruira.com> <grisonnante@reinstallerai-haschich.com> <offrirez@entamerais-localiserons.com> <avoisinerai@meteorites-contrerez.com> <demarquez@rajeuniront-surmenais.com> <portail@barbet-charriee.com> <balisera@humilier-saussaies.com> <urbaniserez@creche-intimions.com> <liquidais@encriers-peseras.com> )


"imcp.ba" wrote:

QUE FAIT L'INSTRUCTIOBN A=0; EN C SUR UN M68000 ????



  le compilateur C essai d'evaluer les constantes
 et donc aussi de genere un code le plus court possible 

si on ecrits A = 12 +3 * 5 ;   (il genere alors A= 27);
    soit   MOVEy.b valeur_imediate27 dansqqchose

si on ecrir A = 3 ; 

    il genere alor un move quick  MOVEQy_valeur_immediate dansqqchose
    l'instruction MOVEQ est plus courte
     car la valeur immediate passe sur 3 ou 4 bits 
     dans le code meme de l'instruction !

Mieux si on ecris 
la commande A=0; en c 
apres optimisation M68000 donne  l'instructiion assembleur

 CLR.x  A    //  clear qq chose encore plus cour que le MOVEQ !!

   A etant ce que l'on veut !!!!
.....

   manque de chance cette instruction est un cas particulier
   de la famille d'instruction Clear bit_list
   constitue par un micro programme interne de la forme

       Lire A ;
       A and ~masque_de_bit ; //pour elliminer les bit voulus
       Ecrire A;

   CLR A est declinee sous la forme Clear all bit

      ce qui donne LIRE A ; A and zero ; ecrier A;


 ce qui corresspond en C a :

   A; A=0;

 la cible est mise a zero; apres une lecture superflus !!!


Dans le cadre d'une programmation normale ca passe presque

mais des que A correspond a un registre de controle de periferique
ca peut posser probleme !!!!!


   par exemple sur un serialisateur
 l'adresse du registre de serialisation
 a deux fonctions 

      en ecriture : c'est lenvois d'un caractere au serialisateur (IT)
      en lecture  : c'est la valeur du dernier caractere recus en
serialsation (IT)


si il n'y a plus de caractere a transmettre
 on peut accuper le temps en envoyant des caractere de SYNCRO
  (plutot que de desamrmer l' it tous de suite !)
  lescaractere de SYNCRO
  sont ellimine a la reception (mode asyncrone syncronise)
   typiquenet SYNCRO est la caractere NULL


  on programme donc une instruction de la forme

#define SYNCRO 0

   SERIALREGISTER = SYNCRO ; // pas de transmisssion a faire pour le
moment


 D'autre part la lecture de chaque caractere recus se fait par
 une suite d'instructions (dans le temps des it)
  derniercaractererecu = SERIALREGISTER; ....


 et c'est la le gag quand l'emmeteur n'a rien a dire
le programme d'it emissioin fait
 un CLR serialregister //(apres optimisation diabolique)
   le claer M6800 fait en interne une lecture supperflus
   qui jette le caractere recus que devriais lire IT reception


   autrement dit pas de reception correcte si l'emmeteur n'a rien a dire
!!!


pas evidant a trouver !


la soultion est de declarer une variable de 
nom "zero" de prefeence externe
de l'intialiser qq part avec un A -= A par exemple

et de l'utiliser ensuite
sous la forme

SERIALISATEUR=zero;

C'est un classique de la programmation C M68000  !!!

 Evidament le nom de la VARIABLE est libre !

et l'on peut lire des code C du style :


satan=FALSE;
.....
SERIALISTEUR=satan; //pour tuer le tandem satanique compilateur M68000

//effet garantis chez les lecteur du code du service qualitee !!!!!!


ce bug de microprogrammation est corrige dans la puce du M68040 !!!!


  comme quoi il n'est pas necessaire d'ecrire des code C compliquer
  sybilins et exoterique pour avoir des erreurs !!!! 
  A=0 ; //ca plante dejat ;




  

    


> --
>   Veuillez n'utiliser que le format txt, dans les couriels !
>  pas de fichiers attache ou mime ! merci !
>   Si vous voulez me joindre  personellement, placer le tag [PERSO],
>  dans le titre de votre message.  MERCI !
> 
>   Je vous remeci de soutenir le logiciel libre !
>    Cf: http://www.fsf.org/philosophy/no-word-attachments.fr.html
> 
>  A.B. : imcp.ba@free.fr   FREE LINUX SYSTEM>  http://imcp.ba.free.fr  http://www.culte.org
>   Membre du Club des Utilisateurs de Linux de Toulouse et des environs.
>   Pc : ortho-graphe connait pas !!!   fonetic oui !!!
> 
> --------------------------------------------------------------------
> Les listes de diffusion occultes: <URL:http://www.CULTe.org/listes/>

-- 
  Veuillez n'utiliser que le format txt, dans les couriels !
 pas de fichiers attache ou mime ! merci !
  Si vous voulez me joindre  personellement, placer le tag [PERSO],
 dans le titre de votre message.  MERCI !

  Je vous remeci de soutenir le logiciel libre !
   Cf: http://www.fsf.org/philosophy/no-word-attachments.fr.html

 A.B. : imcp.ba@free.fr   FREE LINUX SYSTEM http://imcp.ba.free.fr  http://www.culte.org
  Membre du Club des Utilisateurs de Linux de Toulouse et des environs.
  Pc : ortho-graphe connait pas !!!   fonetic oui !!!

--------------------------------------------------------------------
Les listes de diffusion occultes: <URL:http://www.CULTe.org/listes/>