1

Prèchez pour l'assembleur, un exercice de style dans
lequel je me lance sans protection et sans filet, seul
un 'Cerebral' pouvait se lancé la dedans ! lol !

Pourquoi je fais cela, pour essayez de convaincre des
personnes d'abandonné leur R4 pour la rolls des langages baptisé :

L'Assembleur.


L'Assembleur c'est long, c'est lourd, c'est un langage de fou.

Qui a osé dire cela ? Si je l'attrapes je lui mets une tentacule dans
sa face !!!

Qu'est ce que l'assembleur ? L'assembleur est le seul langage qui
vous permet de tout faire sur une machine, j'ai bien dit tout !!
N'oublies jamais une chose, quelque soit le langage que vous
utilisez a la fin cela se fini toujours par de l'assembleur !!
Et oui un prog c compil‚ cela se fini par de l'asm, un prog Gfa compil‚
meme sort !!!!

Donc pourquoi se prendre la tete a faire de l'asm si on y arrive a
travers d'autre langage ? Pour se passez des intermédiaires !! C'est
comme un produit, fabriqué par une boutique, vendu a des grossistes puis
distribué par des détaillants, petit prix au départ et gros prix a
l'arrivée !! C'est pareil pour la vitesse et la taille des autres langages
cela grossit a vue d'oeil !!!

Pour n'importe quel prog ou morceau de prog asm, c'est possible de
détérminé la vitesse a 500 nanosecondes prèt (Pour un STE a 8 Mhz),
vous y arrivez avec un autre langage sans vous arraché les cheveux ?

Cela n'est pas très interressant comme argument donc passons au
'chose vrais !'

L'assembleur c'est super prise de tête, je vais etre franc, pour certains
trucs c'est sur ce n'est pas cadeau, mais c'est toujours possible d'arrangé
la chose. On va passé a des exemples, attaquons !!

En gfa pour affecté 4 a A :

A&=4

en asm :

move.w #4,A

c'est simple non ? le move permet de transféré la valeur 4 dans A, c'est bete !!
le .w signifie word (la meme chose que le & du Gfa) soit une valeur sur 2
octets (valeur comprise entre 0 et 65535). C'est si dur que cela ?

vous voulez additionné 1 sur A :

en Gfa :

a&=a&+1 ou add a&,1 (ou l'inverse add a&,1 je me souviens plus de la syntaxe !)

en asm :

add.w #1,A

C'est vraiment si dur que cela l'asm ? le .w signifie pareil que pour
le move, on veut additionné sur un mot (word dans la langue de Shakespeare !)


L'asm est un cadeau pour les opérations simples, mais plus m..... pour
les opérations complexes. Par exemple pour affiché un texte en gfa un
bon 'print' suffit en asm bonjour le cadeau, parce qu'il n'existe pas
de print tout fait !! QUOI ? Et oui le print est une fonction du
systeme d'exploitation, en asm cela donne :

move.l #Mon_texte,-(a7)
move.w #9,-(a7)
trap #1
addq.w #4,a7

Et oui cela commence a devenir 'vachement' moins facile. Pour une personne
non initié au joie de la glisse sur un 68000, c'est normal, après un peu
de 'jeu' avec un tel microprocesseur et les lignes du dessus seront comme
un dragibus pour Vince, un apéritif !!!

Deux choses sont particulières a l'asm. Les registres et les modes
d'adressages.

Qu'est ce qu'un registre, un registre est une sorte de variables internes
au microprocesseur. Leurs avantages ? La vitesse et leur flexibilit‚.

Exemple :

add.w #1,d0

d0 est un registre du 68000. Cela fait exactement pareil qu'avec A mais
en plus rapide.

Leur flexibilité, en Gfa une variable sur une octet (byte, 1 octet) se déclare
avec un | après la variable une variable sur un mot (word, 2 octets) avec un &
et une variable sur un mot long (long, sur 4 octets) avec un % ben en asm nous
avons les meme trucs marrants :

a|=a|+1 ==> add.b #1,d0 (.b=byte)
a&=a&+1 ==> add.w #1,d0 (.w=word)
a%=a%+1 ==> add.l #1,d0 (.l=long)

voila un registre s'utilise dans les trois tailles sans soucis et cela va
vite, très vite !!

Les modes d'adressage c'est un peu compliqué mais cela vous simplifie la vie
a un codeur.

Et zoum, une incursion dans le monde, des excités du code. En esperant vous
avoir apporté une autre vision de ce monde a part qu'est l'Assembleur.


GT Turbo (C.V.S.D.) turtle


avatar
je sais pas depuis que Fadest nous mets de la zik partout dans ses jeux l'univers a été ebranlé (LordKraken)

2

NOP

dehors

3

Je remercie de tout coeur Rajah Lone, qui après son super exemple en Gfa qui doit se trouvé pas très loin d'ici, a trouvé la plus puissante instruction du 68000 :

NOP


Pour infos, cette instruction ne fait RIEN (NOP est la contraction de No OPeration !) et oui en asm il y a une instruction pour rien faire, c'est trop cool !!


GT En train de rien faire !! apple

P.S. : Rajah Lone, j'ai lancé mon Falcon avec ta routine qui apporte la réponse a toutes mes question, faut attendre longtemps ? dehors
avatar
je sais pas depuis que Fadest nous mets de la zik partout dans ses jeux l'univers a été ebranlé (LordKraken)

4

Je peux proposer ça ? (/me connais pas trop la SM)
truc: NOP
      JMP truc

Là, tu peux attendre grin

5

Rajah Lone :
Je peux proposer ça ? (/me connais pas trop la SM)
truc: NOP
      JMP truc

Là, tu peux attendre grin



Reset quand tu nous tiens !!

Rajah tusors

GT En train de faire un reset !! zen
avatar
je sais pas depuis que Fadest nous mets de la zik partout dans ses jeux l'univers a été ebranlé (LordKraken)

6

Au deumerant, NOP ne sert par à rien. Ca sert à :

- Faire passer le temps, impec pour synchroniser les routines d'overscan
- Syncroniser les commandes TAS
- Vider la queue prefetch (mais ne vide pas le cache)
- Aligner du code sur des multiples de 4 ou 8 octets (utile pour les caches)
- ...

Kochise
avatar
Si Dieu m'a de nouveau fait homme, cette fois il m'a pas raté : marcher sur l'eau et dupliquer les pains, ça marche p'us :/

7

Kochise :
Au deumerant, NOP ne sert par à rien. Ca sert à :

- Faire passer le temps, impec pour synchroniser les routines d'overscan
- Syncroniser les commandes TAS
- Vider la queue prefetch (mais ne vide pas le cache) (non il le remplit ! lol !)
- Aligner du code sur des multiples de 4 ou 8 octets (utile pour les caches)
- ...

Kochise



Je sais, je te remercie Kochise, mais je voulais justement évité de faire peur (Pour l'instant avec des détails techniques digne de tué n'importe quel personne !)

GT En train de 'noppé' !! skate
avatar
je sais pas depuis que Fadest nous mets de la zik partout dans ses jeux l'univers a été ebranlé (LordKraken)

8

au fait, il vaut mieux mettre sp que a7, je trouve ca plus claire moi wink

9

Tiens, en parlant de SP, essayez voir ça, pour bien vous marrer (avec un debuggeur genre MonST, c'est encore plus fandard) :

move.b Dx,-(SP) ; Dx, en fait n'importe quel registre de donné, ne marche qu'en '.b' et qu'avec SP, et qu'en prédécrémenté

Pouvez vérifiez par vous même si vous ne me croyez pas :

move.b Dx,-(Ax) ; Avec Ax n'importe quel registre d'adresse, du moment que ce ne soit pas A7 ou SP

Et après allez comprendre où est ce p'tain de bug qui vous pourrie vos soirée sad=====(

Kochise
avatar
Si Dieu m'a de nouveau fait homme, cette fois il m'a pas raté : marcher sur l'eau et dupliquer les pains, ça marche p'us :/

10

J'ai pas essayé mais tu veux parlé du fait que la pile est obligatoirement prédécrémenté par 2 malgré le .b ?

Si c'est de cela que tu parles c'est tout a fait normal, relis donc ta doc 68000 !! Chez moi c'est automatique de pensé que le .b sur une pile fait obligatoirement un déplacement de la pile de 2.

au fait, il vaut mieux mettre sp que a7, je trouve ca plus claire moi


Après c'est des questions de gout, perso j'ai toujours utilisé a7, un réflexe, on a 8 registres d'adresse qui vont de a0 a a7, donc j'utilises a7.


GT Par pas de deux !! trifaq
avatar
je sais pas depuis que Fadest nous mets de la zik partout dans ses jeux l'univers a été ebranlé (LordKraken)

11

Ben voilà, c'est bien ce que je disais : UNE BONNE DOC EST NECESSAIRE ! Me suis fais avoir depuis le bédut :/ Remarque, il me semble qu'il y'a quelques autres pièges dans le même genre :/

Kochise
avatar
Si Dieu m'a de nouveau fait homme, cette fois il m'a pas raté : marcher sur l'eau et dupliquer les pains, ça marche p'us :/

12

Kochise :
Ben voilà, c'est bien ce que je disais : UNE BONNE DOC EST NECESSAIRE !

Kochise


Exact, rien de tel que pouvoir s'appuyer sur une doc sure et mise a jour, parce que sinon c'est le plantage garanti.



GT Turbo (C.V.S.D.) octopus
avatar
je sais pas depuis que Fadest nous mets de la zik partout dans ses jeux l'univers a été ebranlé (LordKraken)