Another test:

   Active Usings: None
   Loc  Object Code    Addr1 Addr2  Stmt   Source Statement
 000000                00000 00004     1 NEGDISP  CSECT
                                       2 *
                  R:1 FFFFF0           3          USING X'7FFFFFF0',R1
 000000 4132 1020            00010     4          LA    R3,-X'7FFFFFF0'(R2)
                                       5 *
                                       6          YREGS

In either 24-bit or 31-bit mode, the result is mathematically
correct modulo address-range.  In 64-bit mode it's arguably
wildly incorrect.  This is an almost inevitable consequence
of using 32-bit arithmetic in the assembler.  The address
resolution probably generated an integer overflow status.  But
to report it as an error would violate compatibility with IEV90
and prohibit a correct result in narrower addressing modes.
and the assembler can't infer at assembly time which addressing
mode will be in effect when the instruction is executed.  Is
it worth a footnote in the LRM?

-- gil

Reply via email to