In the original S/360, nearly all instructions that manipulated binary
integers treated them as signed quantities. (It's the reason that 32K is
a limit in so many places in z/OS e.g., block sizes, number of ASIDs,
etc.) The assembler has a robust implementation of extended mnemonics to
be used after signed arithmetic instructions.

Recent System z machines have put much more emphasis on unsigned (aka
'logical') arithmetic. There is now logical load, logical add (with or
without carry), logical subtract (with or without borrow), logical
multiply, logical divide, etc. This technology advance makes sense. In
analyzing our assembler product code, it appears that _at least_ 90% of
our binary integers are eligible for treatment as unsigned values
(counts, offsets, masks, loop control, etc.). Legitimate needs for
signed binary quantities are actually difficult to find!

Surprisingly, in spite of this hardware instruction paradigm shift, the
assembler still has not yet implemented a set of useful extended
mnemonics for use after unsigned (logical) arithmetic instructions.
Reading PoOp and hard-coding "BRC xx," is an error prone process. I
"smell" a SHARE requirement. In the mean-time, I'm thinking about
writing macros to provide this capability.

Has anyone thought this through already and come up with what the
mnemonics should be?

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
http://www.phoenixsoftware.com/

Reply via email to