Newsgroups: comp.lang.asm370
Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!caen!mtu.edu!mtu.edu!matt
From: matt@mtu.edu (Matthew T. Kromer)
Subject: why code in 370 Assembler
Message-ID: <1991Apr17.120304.16874@mtu.edu>
Sender: news@mtu.edu
Reply-To: matt@MTUS5.cts.mtu.edu (Matthew T. Kromer)
Organization: Michigan Technological University
Date: Wed, 17 Apr 91 12:03:04 GMT


Doug Schales said it:  370 is fun.  You can do so much more by going directly
to 370...  all of the SVCs and DIAGs are available directly, and the macro
facility in assemblers XF and H is quite powerful.  Once you develop a good
set of subroutines, it is quite easy to whip off a fast, small executable.

One of the problems with IBM's newer releases of higher level languages (at
least under VM, the environment I use) is the neutering of the language libaries
to produce a stand-alone module.  You now have to go through gyrations with
PRELOAD to suck in all of the libraries before you can GENMOD an executable,
and the resulting object file may be well over half a megabyte in size.  This
is extremely slow to load and often slow to execute.  Plus, you get run-time
libraries that want to run away with your program.  PL/I for example, tries
it's hardest to convert what ever you have into what ever it thinks you want.
This may be great if you want to write something entirely in PL/I, but if you
want to get to the guts of VM, you have to begin making direct calls to CMS
or CP services.  At this point, I find writing a small set of assembler
interfaces to these routines to be called by a higher level language (take
your pick which one) is a pain in the ass when I can do the whole thing in
assembly and get a small, stand-alone, and fast object file.

I also suppose it depends on your perspective.  Most Unix systems programmers
never touch assembler except when they have to, Unix being coded mostly in C.
CP is coded in 370 assembler, and CMS is coded in PL/AS.  Thus I have quite
a bit of incentive to use 370 if I want to generate a new CP command, rather
than try to convince CP that it should load some run-time support library.

I really find that the 370 instruction set is rich enough that I never miss
higher level languages.  (The exception being Rexx--and the Rexx EXECCOMM
interface to assembler is quite easy to use and very powerful.)

In general, I find the prevailing attitudes toward IBM System 370/System 390
architecture to be quite uninformed.  Granted, the 360s *are* dinosaurs in the
90s... which is the reason IBM has evolved the line though to 370s to XA to ESA.
I see many examples in modern CS textbooks that compare state of the art
microprocessors to an IBM 360.  Given the 25 year difference, it's not surprising
that a PC can outperform a 360.  I haven't seen a workstation yet that comes
close to running circles around a 3090.  Certainly one can obtain faster
calculations with less expense on a smaller machine, but to assume micro
technology is growing in leaps and bounds while mainframe technology is stagnant
is rather ignorant.  It reminds me of the CS faculty at a certain university
which, upon seeing the two 5 1/4" microcode diskette drives on a 3092 processor
control unit, said:  "Oh, your computer boots off floppy too!"  (These same
faculty later commented on the difficult learning curve of a Macintosh...  but
their approach to IBM mainframes is common.)

Matthew T. Kromer

Discussion in private is welcomed to: MATT@MTUS5.cts.mtu.edu

