On 2018-08-01 16:41, Charles Mills wrote:
"Avoid instructions (executable code) and operand data (working storage or
stack storage) in the same cache lines; which
can be costly due to moving cache lines between the separated (split) local caches
(instruction/data L1/L2)"
-- C. Kevin Shum, Distinguished Engineer, IBM z Systems Microprocessor
Development (March 2016)
Charles
Exactly.
"Mixing executable code and operand data considered harmful"
And if you always avoid mixing instructions and operand data, using EQU
* for labels in code is no longer potentially harmful. We're on pretty
safe ground if we assume IBM will always only create instructions that
are an even number of bytes in size. I prefer, and always use, DS 0H for
labels in code, but if EQU * causes problems in your code you have other
things to clean up.
Here's one to rail about: branching to a hard coded offset from the
current location, e.g.,
B *+12
This is a tire fire waiting to happen.
--
Regards, Gord Tomlin
Action Software International
(a division of Mazda Computer Corporation)
Tel: (905) 470-7113, Fax: (905) 470-6507
Support: https://actionsoftware.com/support/