Logicielsmoto.com

Nous sommes le 21 Avr 2019, 17:20

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 37 messages ]  Aller à la page Précédente  1, 2, 3
Auteur Message
MessagePosté: 11 Avr 2019, 17:59 
Hors ligne

Inscription: 21 Avr 2010, 10:59
Messages: 229
pour prouver que la méthode marche il faut aussi avoir un branchement court en avant et un en arrière dans le meme cas de test non? (idéalement il faudrait même formellement vérifier que toutes les variables évaluées sont correctes, ce qu'on doit pouvoir faire dans c6809, dans la cartouche asm c'est plus sportif)

_________________
http://www.alternative-system.com


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 16 Avr 2019, 14:46 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1100
Localisation: Brest
En lisant une doc d'un autre assembleur 6809, j'ai vu qu'il y avait un IF de plus, à savoir IFP1 (et en fait aussi IFP2). Le contenu de ce If n'est évalué que pendant la passe 1 (la phase de macro-expansion). Avec ce type de IF, on pourrait peut-être se débrouiller dans le cas actuel. Y aurait-il une façon d'émuler cela avec c6809 ? (style une construction du macro processeur qui permette à une variable de valoir 0 en 1ere passe et autre chose sinon.)

Autre truc assez pratique: dans certains assembleurs 6809 on peut ajouter NOEXPAND à la définition d'une macro. Cela a l'effet de masquer son expansion dans les lignes du fichier généré équivalent au "codes.lst" produit. Pour moi qui utilise pas mal les macro instructions, c'est vrai que d'avoir NEGD (la macro) au lieu de 3 lignes avec NEGA NEGB SBCA#0 (la version expandée de NEGD) rendrait le fichier codes.lst plus lisible.

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 16 Avr 2019, 16:47 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1045
Localisation: France (24)
Samuel Devulder a écrit:
En lisant une doc d'un autre assembleur 6809, j'ai vu qu'il y avait un IF de plus, à savoir IFP1 (et en fait aussi IFP2). Le contenu de ce If n'est évalué que pendant la passe 1 (la phase de macro-expansion). Avec ce type de IF, on pourrait peut-être se débrouiller dans le cas actuel. Y aurait-il une façon d'émuler cela avec c6809 ? (style une construction du macro processeur qui permette à une variable de valoir 0 en 1ere passe et autre chose sinon.).

Oui oui je suis dessus, et effectivement, il doit y avoir quelque chose comme ça :)
J'ai déjà dû revoir toute ma routine pour l'enregistrement des symboles, et la faire réagir au plus proche de MACROASSEMBLER.

_________________
Marche a suivre pour s'inscrire sur ce forum
Do not forget to contact one of the administrators to validate your registration.
Le site des démos de Puls
L'émulateur Teo


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 16 Avr 2019, 17:22 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1045
Localisation: France (24)
En fait, il y a même des petites astuces. Par exemple, pour les SET et EQU, l'opérande est évaluée avant le label, et le label ne sera enregistré dans la table des symboles que si l'opérande a pu être définie (donc si elle ne comporte que des éléments qui ont pu être définis) ou qu'il s'agit de la dernière passe.

Par exemple.

_________________
Marche a suivre pour s'inscrire sur ce forum
Do not forget to contact one of the administrators to validate your registration.
Le site des démos de Puls
L'émulateur Teo


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 17 Avr 2019, 22:27 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1045
Localisation: France (24)
Pour tout dire, MACROASSEMBLER a quand même ses limites. Quand on fait par exemple:

Code:
Z5     EQU    Z4
Z4     EQU    Z3
Z3     EQU    Z2
Z2     EQU    Z1
Z1     EQU    Z0
Z0     EQU    12


seuls Z1 et Z0 seront définis.
Pour bien faire, il faudrait autant de passes que de EQU non encore définis.

_________________
Marche a suivre pour s'inscrire sur ce forum
Do not forget to contact one of the administrators to validate your registration.
Le site des démos de Puls
L'émulateur Teo


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 17 Avr 2019, 23:15 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1100
Localisation: Brest
En effet. Avec des SET il n'y a pas ce problème je suppose ? (le SET faisant toujours référence aux dernières valeurs)

Pour tout dire j'utilise (massivement) ce style de construction avec mon dernier jeu de macros:
Code:
* define a stack       
DOSTCK  MACRO
DO9\0   set     0
DO8\0   set     0
DO7\0   set     0
DO6\0   set     0
DO5\0   set     0
DO4\0   set     0
DO3\0   set     0
DO2\0   set     0
DO1\0   set     0
DO0\0   set     0
        ENDM

* default stack     
        DOSTCK

* push value on to a stack
DOPUSH  MACRO
        IFNE    DO9\1
STACK OVERFLOW
        ENDC
DO9\1   set     DO8\1
DO8\1   set     DO7\1
DO7\1   set     DO6\1
DO6\1   set     DO5\1
DO5\1   set     DO4\1
DO4\1   set     DO3\1
DO3\1   set     DO2\1
DO2\1   set     DO1\1
DO1\1   set     \0
        ENDM

* pop value out of a stack
DOPOP   MACRO
        IFEQ    DO1\1
STACK UNDERFLOW
        ENDC
DO1\1   set     DO2\1
DO2\1   set     DO3\1
DO3\1   set     DO4\1
DO4\1   set     DO5\1
DO5\1   set     DO6\1
DO6\1   set     DO7\1
DO7\1   set     DO8\1
DO8\1   set     DO9\1
DO9\1   set     0
        ENDM
(j'en dirais plus à ce sujet plus tard, mais pour teaser je dirais que cela me permet de faire des trucs tout nouveaux qui m'amusent beaucoup.)

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 18 Avr 2019, 06:48 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1045
Localisation: France (24)
Samuel Devulder a écrit:
En effet. Avec des SET il n'y a pas ce problème je suppose ? (le SET faisant toujours référence aux dernières valeurs)

Même avec des SET, le problème est le même.

_________________
Marche a suivre pour s'inscrire sur ce forum
Do not forget to contact one of the administrators to validate your registration.
Le site des démos de Puls
L'émulateur Teo


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 37 messages ]  Aller à la page Précédente  1, 2, 3

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  
cron
Développé par phpBB® Forum Software © phpBB Group
Traduction par phpBB-fr.com