(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/>