EASy68K
http://www.easy68k.com/EASy68Kforum/

Nested macros
http://www.easy68k.com/EASy68Kforum/viewtopic.php?f=9&t=135
Page 1 of 1

Author:  gtippery [ Sun Nov 27, 2005 1:35 am ]
Post subject:  Nested macros

Code:
*-----------------------------------------------------------
*
*   NOTE: This program isn't intended to be executed, just assembled
*         and the listing examined.
*
* Program Name  : NestedMacroTest.x68
* Written by    : gtippery
* Date Created  : 26-Nov-2005
* Description   : Nested macros are not correctly expanded.  The
*   ENDM of the nested macro apparently terminates the expansion
*   of the outer macro(s); also, the listing file has extraneous
*   lines at the end of each macro expansion, one per macro level.
*-----------------------------------------------------------

TASK   MACRO
   MOVE.B #\1,D0
   TRAP #15
   NOP   ;task
   ENDM

TimeTask   EQU   8   ;Centisecs since midnight to D1.L
CentiSec   MACRO
   TASK   TimeTask
   NOP   ;centisec
   ENDM

M3   macro
   CentiSec
   move.l   d1,d0
   NOP   ;m3
   endm

START   ORG   $1000

*   Each of the bits of AL code below should generate the same ML code,
*   except for the number of NOPs at the end of each.
         
   move.b   #TimeTask,D0   ;should have no NOP
   trap   #14

   task   TimeTask    ;should have one NOP

   CentiSec     ;should have two NOPs

   m3       ;should have three NOPs

   END   START


This is the .L68 file:
Code:
00001000 Starting Address
Assembler used: EASy68K Editor/Assembler v3.1 April 19, 2005
Created On: 11/26/05 5:29:16 PM

00000000                             1  *-----------------------------------------------------------
00000000                             2  *
00000000                             3  *   NOTE: This program isn't intended to be executed, just assembled
00000000                             4  *         and the listing examined.
00000000                             5  *
00000000                             6  * Program Name  : NestedMacroTest.x68
00000000                             7  * Written by    : gtippery
00000000                             8  * Date Created  : 26-Nov-2005
00000000                             9  * Description   : Nested macros are not correctly expanded.  The
00000000                            10  *   ENDM of the nested macro apparently terminates the expansion
00000000                            11  *   of the outer macro(s); also, the listing file has extraneous
00000000                            12  *   lines at the end of each macro expansion, one per macro level.
00000000                            13  *-----------------------------------------------------------
00000000                            14 
00000000                            15  TASK        MACRO
00000000                            16              MOVE.B #\1,D0
00000000                            17              TRAP #15
00000000                            18              NOP     ;task
00000000                            19              ENDM
00000000                            20 
00000000  =00000008                 21  TimeTask    EQU     8                       ;Centisecs since midnight to D1.L
00000000                            22  CentiSec    MACRO
00000000                            23              TASK    TimeTask
00000000                            24              NOP     ;centisec
00000000                            25              ENDM
00000000                            26 
00000000                            27  M3          macro
00000000                            28              CentiSec
00000000                            29              move.l  d1,d0
00000000                            30              NOP     ;m3
00000000                            31              endm
00000000                            32 
00001000                            33  START       ORG     $1000
00001000                            34 
00001000                            35  *           Each of the bits of AL code below should generate the same ML code,
00001000                            36  *           except for the number of NOPs at the end of each.
00001000                            37             
00001000  103C 0008                 38              move.b  #TimeTask,D0            ;should have no NOP
00001004  4E4E                      39              trap    #14
00001006                            40 
00001006                            41              task    TimeTask                ;should have one NOP
00001006  103C 0008                 41              MOVE.B #TIMETASK,D0
0000100A  4E4F                      41              TRAP #15
0000100C  4E71                      41              NOP     ;TASK
0000100E                            41              ENDM
0000100E                            42 
0000100E                            43              CentiSec                        ;should have two NOPs
0000100E                            43              TASK    TIMETASK
0000100E  103C 0008                 43              MOVE.B #TIMETASK,D0
00001012  4E4F                      43              TRAP #15
00001014  4E71                      43              NOP     ;TASK
00001016                            43              ENDM
00001016                            43              TASK    TIMETASK
00001016                            44 
00001016                            45              m3                              ;should have three NOPs
00001016                            45              CENTISEC
00001016                            45              TASK    TIMETASK
00001016  103C 0008                 45              MOVE.B #TIMETASK,D0
0000101A  4E4F                      45              TRAP #15
0000101C  4E71                      45              NOP     ;TASK
0000101E                            45              ENDM
0000101E                            45              TASK    TIMETASK
0000101E                            45              CENTISEC
0000101E                            46 
0000101E                            47              END     START

No errors detected
No warnings generated


SYMBOL TABLE INFORMATION
Symbol-name         Value
-------------------------
CENTISEC            2E
M3                  55
START               1000
TASK                0
TIMETASK            8

Author:  profkelly [ Mon Nov 28, 2005 3:18 am ]
Post subject: 

Nested macros are not supported in the current version. I'll move this to the Wish List

There are all great ideas and points on the macro processing. I'll take a look at these issues the next time I'm working on the assembler.

Author:  profkelly [ Sat Dec 03, 2005 1:53 am ]
Post subject: 

Nested macros will work in the next beta realease.

Author:  profkelly [ Thu Apr 27, 2006 3:26 pm ]
Post subject: 

Added to v3.6 beta.

Author:  gtippery [ Mon May 01, 2006 3:51 pm ]
Post subject: 

:cheers:

Page 1 of 1 All times are UTC
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/