On 09/09/10 13:53, Thomas David Rivers wrote:
>> Me too.  A comparison:
>>
>> Assembler H:
>>
>>                                                                              
>>                                    PAGE    2
>>    LOC  OBJECT CODE    ADDR1 ADDR2  STMT   SOURCE STATEMENT                  
>>                    ASM H V 02 10.13 09/09/10
>> 000000                                1 NEGDISP  CSECT
>>                           FFFFF000     2          USING -4096,R1
>> 000000 4132 1FFC           FFFFFC     3          LA    R3,-4(R2)
>>                                        4 *
>> 000004 0000 0000            00000     5          LA    R3,-4(,R2)
>>     IEV034  *** ERROR ***  ADDRESSABILITY ERROR
>>                                        6 *
>>                                        7          YREGS
>>
>
>  I'm trying to determine why this would assemble the
>  instruction at line #3.
>
>  (We have to make some kind of assumption that
>  allows the negative absolute value as the first
>  operand of the USING, which both HLASM and ASM H
>  appear to do.)
>
>  Then, at line #3, there is no base register specified, so
>  the USING of R1 comes into play.
>
>  Thus, the offset to place in the instruction is
>  X'FFFFF000' - 4 which is X'FFFFEFFC'.   That seems
>  to be way outside of the range 0 - 4095, so why
>  isn't there an error?
>
>  If we assume signed arithmetic internally, the
>  the expression -4096-4 is -4100, which again
>  is way outside the range.
>
>  Just wondering what arithmetic leads this
>  particular line to assemble...  I must not
>  be seeing something...
>
Yah.  -4-(-4096) is 4092 (x'FFC'), just inside the range.

Assembler H rules! (I think.  I've lost my manual.)

-- gil

Reply via email to