Howard Brazee wrote:
On 13 May 2008 08:57:14 -0700, [EMAIL PROTECTED] (Michael Poil)
wrote:
Give me Assembler and a hand-held uninterpreted card punch any day. Real
programmers don't use/need HLL's!
Assembler? Real programmers don't need assembler!
This reminds me of a humorous -- and quite memorable -- Dec 2005 post on
ASSEMBLER-LIST, by Michael Stack, interjected into a discussion about
structured HLASM programming, after the "Luddites" started getting a
little out of hand:
<Mike Stack's Humorous Post>
[Disclaimer for the sensitive: this is intended as humor!!]
This discussion arrived at just the right time, in the middle of my
updating some presentations I'll be giving at the March SHARE meeting in
Seattle. I was particularly taken with Steve's comment that a program
which uses the structured programming macros "... hardly looks like
Assembler."
So, there I am, working on a talk about the USING instruction, and in
front of me is an example (please pardon the length):
STM 14,12,12(13) Save all registers in caller's area
LA 14,24(,15) Get address of a new save area
ST 13,4(,14) Connect new save area to old
ST 14,8(,13) and old to new
LR 13,14 Copy addr of new save area to R13
BALR 12,0 Set R12 to addr of next instruction
BC 15,76(,12) Branch around save area
DC 18F'-1' New save area
LA 1,104(,12) Get address of first table
BAL 14,272(,12) Go to INIT routine with first table
LA 1,188(,12) Get address of second table
BAL 14,272(,12) Go initialize second table
L 13,4(,13) Restore addr of previous save area
LM 14,12,12(13) Restore caller's register contents
SR 15,15 Set return code to zero
BCR 15,14 Return to caller
DC (3*28)X'55' First table (three 28-byte entries)
DC (3*28)X'55' Second table
SR 0,0 INIT: set initial age in R0
LA 10,3 Get counter for table entries
LR 11,1 Get addr of first entry to R11
MVC 0(22,11),300(12) Set initial NAME (22 blanks)
ST 0,24(,11) Set initial AGE
LA 11,28(,11) Set R11 to next table entry
BCT 10,280(,12) Count number of entries
BCR 15,14 Return to MAIN when table done
DC CL22' ' Initial value for NAME
END
Now, I claim that THIS is REAL assembler language. Without labels, the
true nature of the program shows through: base registers, displacements,
nearly all the elements of machine-level programming are visible. If I
had wanted to use labels, I should have written it in COBOL, because
with labels [I know you were waiting for it] , it hardly looks like
assembler.
</Mike Stack's Humorous Post>
And, I was ROTFLMAO when I read his later follow-up, after Raymon House
suggested that the original was far too well commented to be a "real"
assembler language program:
<Mike Stack's Humorous Follow-up Post>
Agreed. Here's an improvement, with almost no distractions:
DC X'90ECD00C'
DC F'1105260568'
DC X'50D0E004'
DC X'50E0D008'
DC X'18DE'
DC X'05C0'
DC X'47F0C04C'
DC 72X'FF'
DC X'4110C068'
DC X'45E0C110'
DC X'4110C0BC'
DC X'45E0C110'
DC X'58D0D004'
DC X'98ECD00C'
DC X'1BFF'
DC X'07FE'
DC 168X'55'
DC X'1B00'
DC X'41A00003'
DC X'18B1'
DC X'D215B000C12C'
DC X'5000B018'
DC X'41B0B01C'
DC X'46A0C118'
DC X'07FE'
DC 22X'40'
END
</Mike Stack's Humorous Follow-up Post>
Now, that's REAL programming! :-D
--
Edward E Jaffe
Phoenix Software International, Inc
5200 W Century Blvd, Suite 800
Los Angeles, CA 90045
310-338-0400 x318
[EMAIL PROTECTED]
http://www.phoenixsoftware.com/
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html