On Wed, 27 Oct 2010 14:47:28 -0400, Tom Marchant wrote:
>On Wed, 27 Oct 2010 12:33:44 -0400, David Bond wrote:
>>The only ways to make the assembler to use a library macro instead of a
>>built-in opcode are:
>>1) Use an OPTABLE that does not include the opcode.
>>2) Delete the built-in opcode entry using OPSYN.
>>3) COPY the macro, which will redefine the opcode.
>>
>Isn't there another?
>4) use a :MAC tag on the operation.

Yes, I forgot about the :MAC and :ASM tags.  If they are not used, the
opcode tables effectively work the way I described, which is the way it
actually worked before opcode tags were added to HLASM.

But now there are effectively two slots for each opcode table entry.  If no
tag is coded after the opcode, then the macro version is used if it has
already been defined, otherwise the built-in version is used if it was in
the OPTABLE, and finally the library is searched.  Using the :ASM tag
references only the built-in version. Using the :MAC tag is the same as
omitting the tag except that the built-in version is skipped.

OPSYN cannot be used to reference or change only one of the versions because
the tag cannot be used on the OPSYN label or operand. If the operand is
omitted then both versions will be deleted. And if OPSYN is used to copy an
opcode, both versions are effectively copied to the new name.

David

Reply via email to