On 2016-06-20, at 09:05, John McKown wrote:
> On Mon, Jun 20, 2016 at 9:59 AM, John McKown wrote:
>
>>> Why shouldn't this be allowed:
>>>
>>> 00000182 0000 0000 0000 00000000 294 LLILF
>>> R15,V(BPX4GUI) GET THE EPA
>>> ASMA044E Undefined symbol - V
>>> ASMA173S Delimiter error, expected blank - (BPX4GUI)
>
> ​OOPS, I was thinking of the wrong instruction. V(BPX4GUI) is not a self
> defining symbol. So HLASM won't use it as an immediate value. I guess it's
> a design decision. You could do something like:
>
> LLILF R15,0
> ORG *-4
> DC VL4(BPX4GUI) VL4 AVOIDS FULLWORD ALIGNMENT
> * ORG , NOT REALLY NEEDED.
>
Ugh! Perhaps a design indecision, or just inconsistency.
Long ago, I posted here:
R:B 0101A 13 USING *,R11
00101A 4110 B006 01020 14 LA R1,=E'3.14159'
00101E 15 DC S(=E'3.14159')
** ASMA030E Invalid literal usage - =E'3.14159')
I think the developers had to go out of their way to make a reference
to a relocatable address expression resolve to a base and displacement
successfully in an instruction, but fail in an S-constant. Use of a
common subroutine for base-displacement resolution would go a long
way toward providing consistency.
I suppose some address expressions are more equal than others, but
this sort of complexity is a blot on the future of assembly-language
programming.
-- gil