1

Depuis le temps que j'en cherchais un ! J'ai regardé à nouveau ce que donne vasm, l'assembleur de Frank Wille, et ce dernier a ajouté LE truc qui manquait : le support des macros !

Je détaille la compilation sous Linux et passe assez rapidement sur son utilisation pour générer des progs pour Atari ST/Falcon chez moi :
Le cross-assembleur de rêve: vasm.

J'espère que cela va rendre service à d'autres.
Codeur retraité coulant des jours paisibles...

Je raconte ma vie: http://blog.frosties.org/

2

frost (./1) :
Depuis le temps que j'en cherchais un ! J'ai regardé à nouveau ce que donne vasm, l'assembleur de Frank Wille, et ce dernier a ajouté LE truc qui manquait : le support des macros !

Je détaille la compilation sous Linux et passe assez rapidement sur son utilisation pour générer des progs pour Atari ST/Falcon chez moi :
Le cross-assembleur de rêve: vasm.

J'espère que cela va rendre service à d'autres.


très intéressant!

merci pour le lien smile

3

Il manque le support de REPT/ENDR à l'assembleur, mais ça ne devrait pas prendre trop de temps à implémenter ça.
Codeur retraité coulant des jours paisibles...

Je raconte ma vie: http://blog.frosties.org/

4

frost (./3) :
Il manque le support de REPT/ENDR à l'assembleur, mais ça ne devrait pas prendre trop de temps à implémenter ça.


il manque le support de Tom/Jerry mais ça ne devrait pas prendre trop de temps à implémenter ça tongue

5

Arf, je te fais confiance pour ça wink
Codeur retraité coulant des jours paisibles...

Je raconte ma vie: http://blog.frosties.org/

6

frost (./5) :
Arf, je te fais confiance pour ça wink


il faut juste trouver un peu de temps et de courage pour se plonger dans vasm

les macros mériteraient aussi d'être amélioré à la façon d'assemble
(shiftm, ...)

7

Le code est relativement accessible je trouve, ça ne ressemble déjà pas à un truc de cochon.
Je voudrais déjà avoir le support de rept/endr. Comme je n'ai pas de doc sous la main, le nombre de répétition d'un bloc de code peut-il être une expression ? ou est-ce simplement un nombre ? C'est un peu plus simple à parser dans ce dernier cas smile
Codeur retraité coulant des jours paisibles...

Je raconte ma vie: http://blog.frosties.org/

8

frost (./7) :
Le code est relativement accessible je trouve, ça ne ressemble déjà pas à un truc de cochon.
Je voudrais déjà avoir le support de rept/endr. Comme je n'ai pas de doc sous la main, le nombre de répétition d'un bloc de code peut-il être une expression ? ou est-ce simplement un nombre ? C'est un peu plus simple à parser dans ce dernier cas smile


normalement, c'est une expression

je pense qu'il offre déjà de quoi parser une expression wink

sinon, c'est ballot (quoique)
quand j'ai vu ton annonce vasm, j'étais en train de sérieusement penser à réécrire un assembleur moi même
(il va bien en falloir un pour le nouveau DSP de la JagCF)

sinon, tu as raison, ça a l'air relativement facile de rentrer dans son code

9

Oui, tout se trouve dans expr.c pour ça smile

Ben vois si ce n'est pas plus simple d'utiliser vasm pour ça wink Je pense que c'est un bon choix, le code a l'air bien construit, est moins lourd que les binutils, et Frank Wille a même documenté l'interface dans le manuel de vasm ! Et en plus il est compilable pour Atari ST wink
Codeur retraité coulant des jours paisibles...

Je raconte ma vie: http://blog.frosties.org/

10

frost (./9) :
Oui, tout se trouve dans expr.c pour ça smile

Ben vois si ce n'est pas plus simple d'utiliser vasm pour ça wink Je pense que c'est un bon choix, le code a l'air bien construit, est moins lourd que les binutils, et Frank Wille a même documenté l'interface dans le manuel de vasm ! Et en plus il est compilable pour Atari ST wink


oui, clairement, vasm est une piste à explorer en tout cas
le seul petit truc chiant c'est qu'on ne peut pas mélanger le code de plusieurs CPUs dans un fichier source
puisqu'il faut un assembleur par CPU
je n'ai aucune idée de si ça peut se modifier facilement

11

Je crois que c'est un peu plus compliqué, vasm semble fournir la coquille, charge à toi de fournir le module pour gober le style de syntaxe (mais tu peux garder le module de syntaxe Motorola) et surtout le module CPU. Il me semble assez difficile de lier deux assembleurs en même temps, à moins peut-être de prévoir un module CPU mixte 68k/Tom&Jerry basé sur le module 68k.
Codeur retraité coulant des jours paisibles...

Je raconte ma vie: http://blog.frosties.org/

12

frost (./11) :
Je crois que c'est un peu plus compliqué, vasm semble fournir la coquille, charge à toi de fournir le module pour gober le style de syntaxe (mais tu peux garder le module de syntaxe Motorola) et surtout le module CPU. Il me semble assez difficile de lier deux assembleurs en même temps, à moins peut-être de prévoir un module CPU mixte 68k/Tom&Jerry basé sur le module 68k.


oui, j'ai bien peur que ça ne soit pas si facile que ça à faire
(sauf en hackant le module 68k)

c'est dommage parce que c'est bien pratique dans madmac de pouvoir changer de CPU
en cours de source, ça évite de faire plein de petits fichiers pour pas grand chose

bon, on verra...

13

Oui, ça doit être super confortable. Et pourquoi pas encore pouvoir inclure du code DSP 56k ? smile
Codeur retraité coulant des jours paisibles...

Je raconte ma vie: http://blog.frosties.org/

14

frost (./13) :
Oui, ça doit être super confortable. Et pourquoi pas encore pouvoir inclure du code DSP 56k ? smile


oui, ça serait super chouette ça aussi pour programmer sur Falcon

15

Petit bilan: j'ai reçu un patch pour le support de REPT/ENDR écrit par Altomcat (ex-Sector One), ça, ça marche.
En revanche, l'assembleur est buggé, l'optimisation en mode 68000 vire des instructions sans raisons. En même en mode 020 et +, ça semble s'arranger, mais les exécutables générés par Devpac et vasm sont différents pour un même source.
Voilà pour les petits tests fait à la Outline.


Codeur retraité coulant des jours paisibles...

Je raconte ma vie: http://blog.frosties.org/

16

DEVPAC POWERED !!!

Mode 'je rigoles on'

Mon Frosti, je sais que le niveau des demomakers est elevée mais rajouter des bugs histoire de pas s'ennuyer faut pas pousser !!!

Mode 'je rigoles off'


Sincerement je lacherais pour rien mon Falcon, je supportes pas les claviers PC c'est pas prevu pour des codeurs ou alors ceux avec des doigts crochus smile et au moins je sais que Devpac me genere du vrai code !!


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

17

Aaaah, la qualité légendaire des claviers Atari gni (hors clavier de Mega ST)

Ben je veux bien, mais ni Devpac, ni Assemble ne tournent sur PC tongue
Codeur retraité coulant des jours paisibles...

Je raconte ma vie: http://blog.frosties.org/

18

Personne n'a pensé à gas ? grin
Sérieusement, un cross gcc ça permettrait de porter des trucs + facilement...
y en a pas un déjà utilisé pour MiNT ?

19

Gas a l'énorme désavantage de ne pas prendre des sources "standards" (cad pour Devpac ou Assemble)...

Sinon un cross gcc, ça existe depuis un bon moment pour Atari.
Codeur retraité coulant des jours paisibles...

Je raconte ma vie: http://blog.frosties.org/

20

frost (./17) :
Aaaah, la qualité légendaire des claviers Atari gni (hors clavier de Mega ST)


Mon Frosti si tu est ironique, je t'arretes de suite. Perso j'ai essayé deux claviers de PC et le toucher est trop dur, mon clavier de STE et surtout celui du Falcon est plus doux, plus tendre (Comme moi top ) perso c'est pas pour rien que j'ai revendu mon Eiffel, juste pour la souris un peu 'carree' que je protestes emais depuis que j'utilises l'adaptateur PS2 a SCPCD-Zerosquare, j'ai une souris optique sur mon Falcon !! Et depuis je vais mieux !!


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

21

Je trouve ces claviers vraiment trop mou... Ze préfère les claviers qui cliquent !
Codeur retraité coulant des jours paisibles...

Je raconte ma vie: http://blog.frosties.org/

22

Après avoir viré le code qui empêchait l'export des label locaux dans vasm (oui j'accède au labels locaux en écriture pourquoi ? tongue) et corrigé un bug qui créait une section bss 'pas vide' qui décalait la section suivante (erreurs incompréhensibles au link) j'ai pu compiler mon code !

A oui j'ai aussi fait en sorte que:
SECTION TEXT crée uns section 'code' nommée 'text'
SECTION DATA crée une section 'data' nommée 'data'
SECTION BSS crée une section 'bss' nommée 'bss'

Sinon j'ai commenté toutes les optims car il optimisait le code que je voulais modifier et du coup quand je le modifiait ça marchait pas bien. Pis de toutes façons j'optimise déjà mon code.

Merci Frosty pour la piste smile
Mefiez vous du Dr H qui sommeil en moi !
Muhahahahahahahahaha !
Muuuuhahaha...kof...kof...hahaha !

23

Ah tiens, tu rends tes modifs publiques ?

J'avais trouvé des bugs sur une version précédente, je n'ai pas essayé la dernière qui intègre d'ailleurs REPT/ENDR.
Codeur retraité coulant des jours paisibles...

Je raconte ma vie: http://blog.frosties.org/

24

Pour le probleme de la bss (output_vobj.c): static void write_data(FILE *f,section *sec,taddr data) {   atom *p;   taddr i;   sec->pc=0;   for(p=sec->first;p;p=p->next){     int old=sec->pc;     sec->pc=(sec->pc+p->align-1)/p->align*p->align; /*    if(sec->pc>data)       return;*/     for(;old<sec->pc;old++)       fputc(0,f);     sec->pc+=atom_size(p,sec,sec->pc);     if (data>0) {       if(p->type==DATA){         for(i=0;i<p->content.db->size;i++)           fputc(p->content.db->data[i],f);       }else if(p->type==SPACE)         write_sblock(f,p->content.sb);     }   }   }

Le code est complètement daubé, en fait il faudrait le réécrire (cf les deux lignes commentées :/).


Pour celui des noms de section: static void handle_section(char *s) {   char attr[32];   char *name;   strcpy(attr,code_type);   /* read section name */   if (!(name = parse_name(&s)))     return;   if (*s == ',') {     /* read section type */     char *type;     s = skip(s+1);     type = s;     if (!(s = skip_identifier(s)))       return;     if ((s-type==3 || s-type==5) && !strnicmp(type,"bss",3))       strcpy(attr,bss_type);     else if ((s-type==4 || s-type==6) && !strnicmp(type,"data",4))       strcpy(attr,data_type);     else if ((s-type==4 || s-type==6) && !strnicmp(type,"code",4))       strcpy(attr,code_type);     else       syntax_error(13);  /* illegal section type */     if (s-type > 4) {       if (*(s-2) == '_') {         switch (tolower((unsigned char)*(s-1))) {           case 'c':             strcat(attr,"C");             goto makenewsection;           case 'f':             strcat(attr,"F");             goto makenewsection;           case 'p':             goto makenewsection;         }       }       syntax_error(13);  /* illegal section type */     }     s = skip(s);     if (*s == ',') {       /* read memory type */       s = skip(s+1);       type = s;       if (!(s = skip_identifier(s)))         return;       if (s-type==4 && !strnicmp(type,"chip",4))         strcat(attr,"C");       else if (s-type==4 && !strnicmp(type,"fast",4))         strcat(attr,"F");       else         syntax_error(15);  /* illegal memory type */       s = skip(s);     }   }   else   {     if (!strnicmp(name, "bss", 3))       strcpy(attr, bss_type);     else if (!strnicmp(name, "data", 4))       strcpy(attr, data_type);     else if (!strnicmp(name, "code", 4))       strcpy(attr, code_type);     else if (!strnicmp(name, "text", 4))       strcpy(attr, code_type);   }   makenewsection:   new_section(name,attr,1);   switch_section(name,attr);   eol(s); }

pour les labels locaux c'est un choix du développeur c'est clairement fait exprès smile

je vais mettre ma version du source a disposisiton. D'abord il faut que je corrige les timings du blitter on mode smudge de hatari cvs smile
Mefiez vous du Dr H qui sommeil en moi !
Muhahahahahahahahaha !
Muuuuhahaha...kof...kof...hahaha !

25

Mefiez vous du Dr H qui sommeil en moi !
Muhahahahahahahahaha !
Muuuuhahaha...kof...kof...hahaha !

26

Hop, je fais remonter le topic. Je n'ai pas testé, mais vasm a été encore amélioré et devrait répondre aux besoins de la plupart d'entre nous.

http://blog.frosties.org/post/2009/02/19/Les-evolutions-de-vasm
http://sun.hasenbraten.de/vasm/

Notamment, plus besoin de vlink, rept/endr et tout ça... Faudra que je refasse un test d'assemblage de mon rotozoom pour voir si certains bugs ont été retirés.

Et saviez-vous qu'un compilateur C tout petit et tout efficace est sorti ? http://www.atari.org/news/index.php3?id=article&number=1843
Codeur retraité coulant des jours paisibles...

Je raconte ma vie: http://blog.frosties.org/