EASy68K  
It is currently Tue Oct 15, 2019 12:02 am

All times are UTC




Post new topic Reply to topic  [ 2 posts ] 
Author Message
 Post subject:
PostPosted: Thu Dec 08, 2005 2:45 pm 
Offline
User avatar

Joined: Thu Dec 16, 2004 6:42 pm
Posts: 1102
Null arguments?

How should null arguments be handled?
The following are the results I get from the Quelo Assembler.
<> is treated as a NULL argument but '' is not.

According to the Motorola Resident Structured Assembler Reference Manual (MRSARM)

"It is possible to specify a null argument in a macro call by an empty string (not a blank)" ... "A bracketed argument with no intervening character (<>) will be treated as a null argument."

Code:
foo   MACRO
   IFC   '\2',''
   nop
   ENDC
   move   #\1,d0
   move   #\3,d1
   ENDM

START
   foo   1,2,3    no null
   foo   1,<>,3   argument 2 is null
   foo   1,'',3   argument 2 is null?
   END


0'000000                   11.  START
                           12.c         foo     1,2,3      no null
                False      13.f         IFC     '2',''
                           14.n         ENDC
0'000000  303C 0001        15.1         move    #1,d0
0'000004  323C 0003        16.1         move    #3,d1
                           17.c         foo     1,<>,3     argument 2 is null
                True       18.t         IFC     '',''
0'000008  4E71             19.1         nop
                           20.n         ENDC
0'00000A  303C 0001        21.1         move    #1,d0
0'00000E  323C 0003        22.1         move    #3,d1
                           23.c         foo     1,'',3     argument 2 is null?
                False      24.f         IFC     '''',''    (FALSE, '' is not treated as NULL argument)
                           25.n         ENDC
0'000012  303C 0001        26.1         move    #1,d0
0'000016  323C 0003        27.1         move    #3,d1


_________________
Prof. Kelly


Top
 Profile  
 
 Post subject:
PostPosted: Thu Dec 08, 2005 10:50 pm 
Offline
User avatar

Joined: Thu Dec 16, 2004 6:42 pm
Posts: 1102
Edit68K v3.1.2 beta December 8th, 2005
Macro Test

Code:
*-----------------------------------------------------------
* Macro Test
*-----------------------------------------------------------
MACO     MACRO
         MOVE.\0        \1
         CLR.L          \2
         ENDM

MAC1     MACRO
         MOVE.\0        #\1,D\2
         IF\3           \1                  CONDITIONAL
         ADD.\0         #1,D\2
         IF\3           \1-5                NESTED CONDITIONAL
         ADD.\0         #2,D\2              \4
         ENDC                               END NESTED CONDITIONAL
         ENDC                               END CONDITIONAL
LAB\@    CLR.L          D1
         MOVE.\0        D\2,(A0)+
         B\3            \@END
         BRA            LAB\@
\@END    \5.\0          #1,D\2
         IFLE           \1
         MACO.\0        <D\2,(A0)>,D\2      NESTED MACRO CALL
         ENDC
         ENDM

         OPT            MEX               ;,NOCL
START   ORG   $1000
         MAC1.L         7,3,GT,<TEST PASSES>,ADD
         MOVE.L         #7,D3
         ADD.L          #1,D3
         ADD.L          #2,D3               TEST PASSES
LAB.001  CLR.L          D1
         MOVE.L         D3,(A0)+
         BGT            .002END
         BRA            LAB.001
.002END  ADD.L          #1,D3

         MAC1           0,6,NE,<ERROR HERE>,SUB
         MOVE.          #0,D6
LAB.003  CLR.L          D1
         MOVE.          D6,(A0)+
         BNE            .004END
         BRA            LAB.003
.004END  SUB.           #1,D6
         MACO.          <D6,(A0)>,D6        NESTED MACRO CALL
         MOVE.          D6,(A0)

   STOP   #$2000
   END   START


The result

Code:
00001000 Starting Address
Assembler used: EASy68K Editor/Assembler v3.1.2 beta December 8th, 2005
Created On: 12/8/2005 5:47:06 PM

00000000                             1  *-----------------------------------------------------------
00000000                             2  * Macro Test
00000000                             3  *-----------------------------------------------------------
00000000                             4  MACO     MACRO
00000000                             5           MOVE.\0        \1
00000000                             6           CLR.L          \2
00000000                             7           ENDM
00000000                             8 
00000000                             9  MAC1     MACRO
00000000                            10           MOVE.\0        #\1,D\2
00000000                            11           IF\3           \1                  CONDITIONAL
00000000                            12           ADD.\0         #1,D\2
00000000                            13           IF\3           \1-5                NESTED CONDITIONAL
00000000                            14           ADD.\0         #2,D\2              \4
00000000                            15           ENDC                               END NESTED CONDITIONAL
00000000                            16           ENDC                               END CONDITIONAL
00000000                            17  LAB\@    CLR.L          D1
00000000                            18           MOVE.\0        D\2,(A0)+
00000000                            19           B\3            \@END
00000000                            20           BRA            LAB\@
00000000                            21  \@END    \5.\0          #1,D\2
00000000                            22           IFLE           \1
00000000                            23           MACO.\0        <D\2,(A0)>,D\2      NESTED MACRO CALL
00000000                            24           ENDC
00000000                            25           ENDM
00000000                            26 
00000000                            27           OPT            MEX                                     ;,NOCL
00001000                            28  START   ORG     $1000
00001000                            29           MAC1.L         7,3,GT,<TEST PASSES>,ADD
00001000  7607                      29           MOVE.L        #7,D3
00001002                 TRUE       29           IFGT           7                  CONDITIONAL
00001002  5283                      29           ADD.L         #1,D3
00001004                 TRUE       29           IFGT           7-5                NESTED CONDITIONAL
00001004  5483                      29           ADD.L         #2,D3              TEST PASSES
00001006                            29           ENDC                               END NESTED CONDITIONAL
00001006                            29           ENDC                               END CONDITIONAL
00001006  4281                      29  LAB_0    CLR.L          D1
00001008  20C3                      29           MOVE.L        D3,(A0)+
0000100A  6E00 0004                 29           BGT            _0END
0000100E  60F6                      29           BRA            LAB_0
00001010  5283                      29  _0END    ADD.L          #1,D3
00001012                 FALSE      29           IFLE           7
00001012                            29           ENDC
00001012                            29           ENDM
00001012  7607                      30           MOVE.L         #7,D3
00001014  5283                      31           ADD.L          #1,D3
00001016  5483                      32           ADD.L          #2,D3               TEST PASSES
00001018  4281                      33  LAB.001  CLR.L          D1
0000101A  20C3                      34           MOVE.L         D3,(A0)+
0000101C  6E00 0004                 35           BGT            .002END
00001020  60F6                      36           BRA            LAB.001
00001022  5283                      37  .002END  ADD.L          #1,D3
00001024                            38 
00001024                            39           MAC1           0,6,NE,<ERROR HERE>,SUB
00001024  3C3C 0000                 39           MOVE.W        #0,D6
00001028                 FALSE      39           IFNE           0                  CONDITIONAL
00001028                            39           ENDC                               END NESTED CONDITIONAL
00001028                            39           ENDC                               END CONDITIONAL
00001028  4281                      39  LAB_1    CLR.L          D1
0000102A  30C6                      39           MOVE.W        D6,(A0)+
0000102C  6600 0004                 39           BNE            _1END
00001030  60F6                      39           BRA            LAB_1
00001032  5346                      39  _1END    SUB.W          #1,D6
00001034                 TRUE       39           IFLE           0
00001034                            39           MACO.W        <D6,(A0)>,D6      NESTED MACRO CALL
00001034  3086                      39           MOVE.W        D6,(A0)
00001036  4286                      39           CLR.L          D6
00001038                            39           ENDM
00001038                            39           MACO.W        <D6,(A0)>,D6      NESTED MACRO CALL
00001038                            39           ENDC
00001038                            39           ENDM
00001038  3C3C 0000                 40           MOVE.          #0,D6
0000103C  4281                      41  LAB.003  CLR.L          D1
0000103E  30C6                      42           MOVE.          D6,(A0)+
00001040  6600 0004                 43           BNE            .004END
00001044  60F6                      44           BRA            LAB.003
00001046  5346                      45  .004END  SUB.           #1,D6
00001048                            46           MACO.          <D6,(A0)>,D6        NESTED MACRO CALL
00001048  3086                      46           MOVE.W        D6,(A0)
0000104A  4286                      46           CLR.L          D6
0000104C                            46           ENDM
0000104C  3086                      47           MOVE.          D6,(A0)
0000104E                            48 
0000104E  4E72 2000                 49          STOP    #$2000
00001052                            50          END     START

No errors detected
No warnings generated

_________________
Prof. Kelly


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 2 posts ] 

All times are UTC


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Group