Paul Gilmartin noted:

>> And I have an example where base and displacement are
>> successfully evaluated in an R[SX] instruction where an
>> S-constant with the same argument in apparently the same
>> context causes an error.

and later posted this example:

                 R:2  00000           2          USING *,R2
000000 4140 2048            00048     3          LA    R4,=F'42'
000004                                4          DC    S(=F'42')
** ASMA030E Invalid literal usage - =F'42')
** ASMA435I Record 4 in user.NEGD64.JOB07226.D0000101.? on volume:

The reason the literal is invalid in the S-type (or similar) constant is
that parsing it would require recursive entry into the DC operand
processor.

Two observations: (
(1) Given the extreme constraints on early assemblers (e.g. handle the full
language in 18K memory), it was quite reasonable to limit such syntax.
(2) Since a literal is just a convenient name for a constant, the same
function as in statement 4 above could be achieved by writing
        DC      S(F42)  followed by
F42     DC      F'42'

John Ehrman

Reply via email to