I am going to *guess* that NILF takes a signed 31-bit integer, and thus -16 is 
valid; whereas NILL takes an unsigned 16-bit integer, and thus -4 is no good.

You could test my hypothesis with NILL R15,X'FFFC' . My guess is that it will 
be valid.

Charles


-----Original Message-----
From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On 
Behalf Of Steve Smith
Sent: Thursday, July 19, 2018 9:26 AM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Inconsistency with NILL vs. NILF

An issue I raised on IBM-MAIN led to discussing how to round an address to
a 16-byte (quad-word) boundary.  The C example included the expression
<code>p &= -16;</code>.  I suggested that the NILL & NILF instructions
could handle this, but probably wouldn't.  So...

<quote>
Re specification of rounding mask:  I do think -16, -8, etc. are an elegant
way to specify these, particularly as they correlate to 16-byte, 8-byte,
etc. boundaries.   I sure wish they were usable with NILL and NILF.

Well, I decided to check before complaining... and (surprise!):

0000028C 0000 0000               00000000    481          NILL
R15,-4
** ASMA031E Invalid immediate or mask field

00000290 C0FB FFFF FFF0          00000000    482          NILF
R15,-16
                                             483
*

Sigh.

</quote>

Given what J. Scott has said before, I guess this is yet another
consequence of how HLASM handles numbers.

-- 
sas

Reply via email to