On 10/29/2010 7:45 AM, Beate Kawelke wrote:
Dear all,
thanks for the good advice. I forgot to mention the background of my question: I'm
currently looking into "modernizing" 20-year-old code (some of which is by me,
so I feel a bit old, too).
While I have to add some more functions, I will also take the opportunity to
improve the code.
What I have done so far:
- Changed xH to xHI if possible (e.g. LH Rx,=Y(4) to LHI Rx,4)
- Changed ICM to LT/L if possible
- Looked into TIME LINKAGE=SYSTEM instead of TIME LINKAGE=SVC
- Toyed with the idea of replacing GETMAIN / FREEMAIN with STORAGE (not worth
the effort - of course, new code will be STORAGE)
The first two are simply a change from one statement into another - no big deal
(except that there is no SHI, so I've got to use AHI ...,-nn).
Changing xH to xHI improves both performance and maintainability, ICM to LT/L makes it at
least easier to read. I do not know if there is a performance impact if the alignment is
wrong. And I have thought about setting the assembler options to NOALIGN to get rid of
those annoying "alignment" messages...
The transition to the "new" TIME format is not so easy - I need work area
fields instead of simply getting the values in R0/R1, I have to take care of MF=E/L etc.
This will take more time and effort - don't know yet if I will tackle that one.
Do you have any other ideas ? I do not want to rewrite too much, so I'm looking for
"quick wins" like the two above.
Thanks,
Beate
-----Original Message-----
From: IBM Mainframe Assembler List
[mailto:[email protected]] On Behalf Of Chris Craddock
Sent: Monday, October 25, 2010 3:37 PM
To: [email protected]
Subject: Re: [ASSEMBLER-LIST] GETMAIN/FREEMAIN vs. STORAGE
OBTAIN/RELEASE
I was pretty sure that the STORAGE macros are "better" than
GETMAIN/FREEMAIN, both in terms of functionality and
performance. To back that up, I searched for documentation.
What I found so far is a fairly recent presentation from
SHARE:
http://ew.share.org/client_files/callpapers/attach/SHARE_in_De
nver/S1237DB120530.pdf which says (on page 34) that
GETMAIN/FREEMAIN is taking a lot less cycles than STORAGE
OBTAIN/RELEASE (17,000 vs. 20,000). I haven't found any IBM
document saying anything about performance, all I got was
that STORAGE is recommended for some environments (e.g. for
AR mode). And then I found a thread on IBM-MAIN where Peter
Relson talked about the relationship between the two:
http://www.mail-archive.com/[email protected]/msg122945.htm
l but unfortunately not much about the default LINKAGE=SYSTEM
of STORAGE.
I always thought that an SVC interrupt (GETMAIN) "costs"
more than a PC (STORAGE with LINKAGE=SYSTEM) - am I wrong?
Anyway: In a "normal" environment (primary mode, key 8),
what would you recommend to use and why? And if you want to
"modernize" a module, would you change from one to the other?
It is true that SVC FLIH and SLIH processing is much more
expensive than a single stacking PC instruction, however both
are small relative to the overall internal pathlength of the
GETMAIN/STORAGE function. It turns out that the STORAGE
interface has to do a lot more validation processing because
it is a lot more flexible than GETMAIN and it also has to set
up for entry to the VSM internal logic the same way the SVC
would have and then "undo" it on the way back before the PR
instruction returns from the macro call. So the net is that
both end up going to the same place, but STORAGE is a bit
longer pathlength overall than GETMAIN.
If you're writing garden variety code there's still a few
differences between the two that you might prefer STORAGE
over GETMAIN if you're writing new code. If you're renovating
old code it probably isn't worth changing the macro
interfaces you use unless you're actually changing their
usage at the same time.
CC
Beate,
You might find a few useful techniques here:
http://www.trainersfriend.com/Papers/Assembler.Coding.1.pdf
--
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