Restrictions for debugging self-modifying assembler code

z/OS® Debugger defines two types of self-modifying code: detectable and non-detectable. Detectable self-modifying code is code that either:

  • Modifies an instruction via a direct reference to a label on the instruction or on an EQU * or DS 0H immediately preceding the instruction. For example:
    Inst1    NOP   Label1
             MVI   Inst1+1,X'F0'
  • Uses the EQAMODIN macro instruction to identify the instruction being modified. For example:
            EQAModIn  Inst1
    Inst1   NOP       Label1
            LA        R3,Inst1
            MVI       0(R3),X'F0'

Any self-modifying code that does not meet one of these criteria is classified as non-detectable.