0 Members and 1 Guest are viewing this topic.
...Ex1 byte 1,2,3,4,5,6,7,8Ex2 byte 7,6,5,4,3,2,1,0...Pattern Ex1,Ex1,Ex2,....
Ex1 = [1,2,3,4,5,6,7,8]Ex2 = [7,6,5,4,3,2,1,0]Pattern Byte Ex1,Ex1,Ex2
8 ** [ ld (hl),Ex2[#]:inc l ] ; Expend to ld (hl),7:inc l:ld (hl),6:inc l ...
Macro Ex1() Byte 1,2,3,4,5,6,7,8 End Macro Ex2() Byte 7,6,5,4,3,2,1,0 EndPattern Ex1():Ex1():Ex2()
add a,l jr nc,_:inc h ld l,a
@Ast Intéressant. Deux pistes pour cela : tableaux et effectivement macros.1/ TableauxCode: [Select]Ex1 = [1,2,3,4,5,6,7,8]Ex2 = [7,6,5,4,3,2,1,0]Pattern Byte Ex1,Ex1,Ex2La seule chose à régler ici est qu'on ne voit pas à l'utilisation (ligne Pattern) qu'il s'agit de tableaux. En revanche cela permet plus de choses, comme :Code: [Select]8 ** [ ld (hl),Ex2[#]:inc l ] ; Expend to ld (hl),7:inc l:ld (hl),6:inc l ...2/ MacrosTon exemple est un peu lacunaire, car ni l'utilisateur ni l'assembleur ne peuvent deviner qu'Ex1 et Ex2 sont des macros. Je verrais plutôt un truc du genre :Code: [Select] Macro Ex1() Byte 1,2,3,4,5,6,7,8 End Macro Ex2() Byte 7,6,5,4,3,2,1,0 EndPattern Ex1():Ex1():Ex2()La syntaxe précise reste à définir. Etudier l'existant (Pyradev et cross-assembleurs).
C'est juste un exemple avec ce qu'il serait important d'ajouter, à mon humble avis! La syntaxe reste à définir, of course.
"asic": qu'est-ce que c'est ? Voir avec Grim.
* possibilité de substituer des instructions complètes. E.g. BRESENHAM inc l, inc d
Si la virgule sert de séparateur entre paramètres, ce point pose la question du passage d'instruction avec virgule.On pourrait mettre de telles instructions entre guillemets (e.g. "ld a,h"), ce qui pose la question du passage de chaines.[size=78%] [/size]
MACRO swap $reg1 $reg2push $reg1push $reg2pop $reg1pop $reg2MEND
Le manque de curiosité tue !Sur feu P'n'P, il y avait eu un fil intéressant sur les macros utiles.Il serait sympa de les remettre ici (ou sur une page wiki dédiée).Encore plus intéressant serait de lister les macros que vous auriez aimé avoir, mais que les limites de votre assembleur rendent impossibles à définir.
le définition de fonctions quelconques
onde1 256 ** BYTE ABS(SIN(#)/256) ; Rebond (# est le compteur interne de repétition. Ici de 0 à 255)onde2 256 ** BYTE ABS(SIN(4*#)/[256+#+#]) ; Rebond amorti (amplitude 3 fois moins grande en fin de courbe)ou encore LD A,ABS(shift)
; Utilisation ld a = sin(pi)*256
Après, pour une fonction arbitraire, faut voir le besoin ! Aurais-tu d'autres exemples en tête ?
Je ne comprends pas cette syntaxe. Pourquoi un '=' ?
Je n'ai pas d'exemple précis en tête tout de suite.