Paul Gilmartin wrote:
On Aug 21, 2010, at 14:59, Steve Comstock wrote:
John P. Baker wrote:
When using the LARL instruction to reference a literal (i.e., =X'..'), I
receive an ASMA058E error message due to the literal not being property
aligned (on a halfword boundary).
1. LARL stores the address of the target as a signed fullword
binary integer designating how many halfwords away the target
is from the instruction; because of this, LARL can never
generate an odd address
Which is exactly the reason John B. received the ASMA058E
error message.
2. You can specify your literal as a halfword or fullword literal, e.g.:
LARL 3,=h'23'
Depriving the programmer of the convenience of the hex
representation.
3. Best bet: avoid literals. I never code them.
The original designers of the assembler, in their wisdom,
provided literals. Would you impose your personal coding
esthetic on all programmers?
No. I'm a Unitarian. :-)
since you know LARL always requires an even addres, you could
always do something like this:
LARL 4,mylit
...
ds 0h
mylit dc c'An odd number of characters'
This suggests an alternative to John B's requirement, perhaps
more generally useful: multiple constants within a literal.
Suppose one could code:
LARL 4,=(0H'0',X'1234')
Thinking a little further about what the assembler might need
to do to materialize a literal such as:
=(C'a',0D'0',C'b')
I suspect it may not be worth it.
-- gil
--
Kind regards,
-Steve Comstock
The Trainer's Friend, Inc.
303-393-8716
http://www.trainersfriend.com
* To get a good Return on your Investment, first make an investment!
+ Training your people is an excellent investment