[an error occurred while processing this directive]

HP OpenVMS Systems

ask the wizard
Content starts here

Alpha Macro32 and VAX PSL (Z) bits?

» close window

The Question is:

 
While using AMAC V3.0-23-311D:
 
The MACRO-32 migration compiler does not set the
Z-flag correctly when match is made using the
MATCHC instrcution. On a match, the Z-flag should be set. On no-match, the
Z-flag should be
cleared. In fact, the Z-flag is cleared in both
cases.
 
Try this little code. Assemble and link non-optimized with debugger and set
break point after each MATCHC instruction. At each breack, check the PSL.
Notice the Z-flag does not change. What's up Wiz?
 
        .TITLE  TEST
        .PSECT  TEST,EXE
        .CALL_ENTRY LABEL=TEST
        MATCHC  #1,OPTION1,#LIST_SIZE,LIST
        MATCHC  #1,OPTION2,#LIST_SIZE,LIST
        $EXIT_S
        RET
        .PSECT  DATA,NOEXE
OPTION1:        .ASCII  /A/
OPTION2:        .ASCII  /D/
LIST:   .ASCII  /CAT/
LIST_SIZE = 3
        .END TEST
 


The Answer is :

 
  OpenVMS Alpha V7.2-1 using "AMAC V4.1-11-3381U" -- with the attached
  (modified) example works as expected.  The particular version string
  you report appears to be associated with the Macro32 compiler integrated
  into the OpenVMS Alpha V7.1 release, and not the version included with
  OpenVMS Alpha V7.2-1.
 
  The OpenVMS Wizard is not particularly certain which command or Macro32
  instruction is being used to display the contents of the (simulated)
  Z bit in your example -- the Alpha PSL does not include condition code
  flag bits, the Macro32 compiler simulates these condition code flag bits,
  including emulation for the BEQL, BNEQ, and MOVPSL operators among others.
 
 
        .TITLE  TEST
        .PSECT  TEST,EXE
        .CALL_ENTRY LABEL=TEST
	PUSHAQ  AMSG
        CALLS   #1,G^LIB$PUT_OUTPUT
        MATCHC  #1,OPTIONA,#LIST_SIZE,LIST
	BNEQ    15$
	PUSHAQ  OKMSG
        CALLS   #1,G^LIB$PUT_OUTPUT
        BRB     20$
15$:	PUSHAQ  NOMSG
        CALLS   #1,G^LIB$PUT_OUTPUT
20$:	PUSHAQ  DMSG
        CALLS   #1,G^LIB$PUT_OUTPUT
	MATCHC  #1,OPTIOND,#LIST_SIZE,LIST
	BNEQ    25$
	PUSHAQ  OKMSG
        CALLS   #1,G^LIB$PUT_OUTPUT
	BNEQ    30$
25$:	PUSHAQ  NOMSG
        CALLS   #1,G^LIB$PUT_OUTPUT
30$:    $EXIT_S
        RET
        .PSECT  DATA,NOEXE
OPTIONA:        .ASCII  /A/
OPTIOND:        .ASCII  /D/
LIST:   .ASCII  /CAT/
LIST_SIZE = 3
AMSG:   .ASCID  /Looking for A in CAT/
DMSG:   .ASCID  /Looking for D in CAT/
OKMSG:  .ASCID  /Match found/
NOMSG:  .ASCID  /No match found/
        .END TEST
 

answer written or last revised on ( 30-NOV-1999 )

» close window